我一直在尝试为基本加密开发一种良好的换位方法(不会在现实中使用)
这是否符合要求:
for (int k = 0; k < Plaintext.Length; k++) //transpose
{
Swapchars(ResultArray, k, (key.length * k) % Plaintext.Length);
}
谢谢!
答案 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"
将以相同的方式加密。