使加密字符串的长度与输入字符串相同?

时间:2010-11-24 05:41:47

标签: asp.net encryption

我有一个15位的字符串要加密。

我尝试过使用.NET的各种加密函数,但所有加密字符串的长度至少为24,28或32个。

我听说CipherMode.CTS有Padding = None,它产生与输入长度相同的长度输出,但我似乎无法得到相同的结果。我玩过块尺寸,钥匙尺寸和盐尺寸。

我不介意在我的输入字符串中添加一个数字,使其长度为16。

任何人都知道解决方法吗?

2 个答案:

答案 0 :(得分:3)

如果你使用ECB模式,它会将输入四舍五入到块大小的下一个倍数,然后产生完全相同的输出大小。

几乎所有其他模式都包含/使用初始化向量(IV),使输出比输入大一个块(再次,在输入被舍入到块大小的下一个倍数之后)。

大多数流密码产生的输出与输入的大小完全相同 - 但在典型的加密库中,流密码远不如分组密码。一个原因是密钥分发对于流密码来说是一个更严重的问题(使用相同的密钥两次使用流密码会产生主要的安全漏洞)。

答案 1 :(得分:2)

代码字为Format-preserving encryption。不幸的是我不知道任何.NET实现(框架肯定没有)。