我有一个15位的字符串要加密。
我尝试过使用.NET的各种加密函数,但所有加密字符串的长度至少为24,28或32个。
我听说CipherMode.CTS有Padding = None,它产生与输入长度相同的长度输出,但我似乎无法得到相同的结果。我玩过块尺寸,钥匙尺寸和盐尺寸。
我不介意在我的输入字符串中添加一个数字,使其长度为16。
任何人都知道解决方法吗?
答案 0 :(得分:3)
如果你使用ECB模式,它会将输入四舍五入到块大小的下一个倍数,然后产生完全相同的输出大小。
几乎所有其他模式都包含/使用初始化向量(IV),使输出比输入大一个块(再次,在输入被舍入到块大小的下一个倍数之后)。
大多数流密码产生的输出与输入的大小完全相同 - 但在典型的加密库中,流密码远不如分组密码。一个原因是密钥分发对于流密码来说是一个更严重的问题(使用相同的密钥两次使用流密码会产生主要的安全漏洞)。
答案 1 :(得分:2)
代码字为Format-preserving encryption。不幸的是我不知道任何.NET实现(框架肯定没有)。