这是某种形式的换位吗?

时间:2012-12-09 14:49:56

标签: c# cryptography

我一直在尝试为基本加密开发一种良好的换位方法(不会在现实中使用)

这是否符合要求:

for (int k = 0; k < Plaintext.Length; k++) //transpose
{
     Swapchars(ResultArray, k, (key.length * k) % Plaintext.Length); 
}

谢谢!

1 个答案:

答案 0 :(得分:1)

这仅使用密钥长度,而不是密钥内容。因此,"aaa""bbb"作为密钥将以相同的方式加密。

这是一个简单的方法来合并关键内容(注意,这段代码当然是教育性的。它不是真正的加密):

var mulConstant = key.Sum(c => (int)c); //derive constant from key contents
for (int k = 0; k < Plaintext.Length; k++) //transpose
{
     Swapchars(ResultArray, k, (mulConstant * k) % Plaintext.Length); 
}

我们使用取决于整个键的所有关键字符的总和,而不是乘以key.Length。当你更改任何字符时,整个键都会改变。

仍有明显的弱点。密钥"ab""ba"将以相同的方式加密。