我想用 J2ME 加密和解密 SMS,我尝试TEA
了算法,但它会生成一个很长的加密文本。是否有任何其他轻量级算法可以生成与原始文本长度相同的加密文本?
问问题
584 次
2 回答
1
检查流芯片(如 RC4)。这些不会增加空间需求。加密数据的长度与普通数据相同。
如果要加密 7 位文本消息,则可以是 160 个字符。然后那些没有帮助。但如果纯文本的最大长度为 140 字节,则可以使用。
于 2012-05-22T11:08:06.483 回答
1
流加密确实适用于此,但即使流加密也仅适用于位。因此,您需要压缩文本以适应尽可能少的位。使用紧缩在大多数情况下会起作用,但在较短的消息或包含不可压缩数据的消息上可能会失败。
另一种方法是自己将消息压缩成尽可能少的位。例如,数字 0..9 是 ASCII30h
到39h
. 但它们也可能以二进制形式存储0000
为1001
二进制。压缩 BCD 将是编码数字的好选择。数学专业的学生会立即看到您可以使用组和除法来满足最低存储要求,但这可能会增加相当多的 CPU 资源(更不用说开发该解决方案的乐趣了)。一旦您拥有最短的二进制表示,您就可以使用流密码进行加密。
所以现在你有了这个漂亮的短二进制表示。希望它将适合 SMS 消息。如果没有,您需要对生成的二进制表示进行编码。
基本上,您需要做的是:
send = Send(EncodeBin(Encrypt(EncodeTxt(plain))))
然后
plain = DecodeTxt(Decrypt(DecodeBin(Receive(send))))
但不要让它阻止你:)
于 2012-05-22T22:44:31.693 回答