Java me J2ME中的短信加密/解密

Java me J2ME中的短信加密/解密,java-me,sms,encryption,Java Me,Sms,Encryption,我想用J2ME加密和解密短信,我尝试了TEA算法,但它生成了一个长的加密文本。 是否有其他轻量级算法生成与原始文本长度相同的加密文本?检查流(如RC4)。这些不会增加空间需求。加密数据的长度与普通数据相同 如果您想加密7位文本消息,它可以是160个字符。那么这些都没有帮助。 但如果纯文本的最大长度为140字节,则可以使用这些字节。流加密确实适用于此,但即使流加密也只适用于位。因此,您需要压缩文本以尽可能少地容纳位。使用通缩在大多数情况下都可以工作,但在较短的消息或包含不可压缩数据的消息上可能会失

我想用J2ME加密和解密短信,我尝试了
TEA
算法,但它生成了一个长的加密文本。 是否有其他轻量级算法生成与原始文本长度相同的加密文本?

检查流(如RC4)。这些不会增加空间需求。加密数据的长度与普通数据相同

如果您想加密7位文本消息,它可以是160个字符。那么这些都没有帮助。
但如果纯文本的最大长度为140字节,则可以使用这些字节。

流加密确实适用于此,但即使流加密也只适用于位。因此,您需要压缩文本以尽可能少地容纳位。使用通缩在大多数情况下都可以工作,但在较短的消息或包含不可压缩数据的消息上可能会失败

另一种方法是自己将消息压缩成尽可能少的比特。例如,数字0..9是ASCII
30h
39h
。但它们也可以以二进制形式存储,即
0000
1001
二进制。压缩BCD将是编码数字的一个好选择。数学专业的学生会立即发现,可以使用组和分区来满足最低的存储需求,但这可能会增加相当多的CPU资源(更不用说开发该解决方案的乐趣了)。一旦得到最短的二进制表示,就可以使用流密码进行加密

现在你有了这个漂亮的短二进制表示。希望它能融入短信中。如果不是,则需要对生成的二进制表示进行编码

基本上,您需要做的是:

send = Send(EncodeBin(Encrypt(EncodeTxt(plain))))
然后


但不要因此而停止:)

我将RC4与Cipher.getInstance(“RC4”)一起使用,但它会将数据长度增加到重复的长度,160个字符变为320个字符。J2ME不支持RC4:(DaHMAD ButuFrast:您可以随时为J2ME编写它,但它很简单。如果安全级别必须很高,请考虑其他流CHIPER。@不,RC4不复制长度。您可能将CHIPE文本转换为HEX转储。重复它。如果您想使用HEXDUMP,那么您可以使用7位EnCOD。在短消息中,它将最大消息大小限制为80字节(160/2)。如果您可以在SMS消息中使用8位编码而不是hexdump,则可以使用140字节的消息。当然,您可以尝试加密7位编码的SMS PDU的有效负载,但这将很棘手。对于长度,是的,我使用的是hex函数,现在我使用的是Base64编码,它只会增加一些字节的长度(120个字符表示160个加密和编码字符)。
plain = DecodeTxt(Decrypt(DecodeBin(Receive(send))))