Java/Flex使用相同密钥加密相同的信息,生成密文不同的解决方法

现在开发的这个系统,用Java构建服务端,Flex构建客户端。这就存在一个问题,即数据传输的安全性,尤其对于敏感的用户名、密码等数据。所以在重要数据传输之前,进行加密。我们采用AES加密算法,服务端和客户端使用相同的密钥进行加密和解密。

本来一切顺利,结果,在调试加密解密数据时出现了问题。使用JavaFlex分别开发服务器端和客户端的数据加/解密程序时,发现使用相同的密钥加密相同的数据,Java程序生成的密文与Flex程序生成的密文不同。这让我非常困惑,按说算法相同得出的结果就应该相同。是哪里出了问题呢?网上查找关于Java/Flex之间加密解密的信息,资料不多,相关的信息更是没有。在无计可施之时,一个偶然的信息给了我一个提示,说是Java加密与IOS开发中相同的算法对密钥数据的格式是不同的。那么会不会JavaFlex也是类似的问题呢?经过试验,终于发现,Java加密使用字符串密钥,在Flex中需要转换成16进制数,作为密钥。

例如:Java密钥是adkei12D4kf5DKou,那么转换成Flex使用的密钥值是,将该字符串转换成字节数组,然后每一个字节的8位分为高4位和低4位,分别转换成一个16进制数。这样组成的字符串作为Flex端使用的密钥,即61646b6569313244346b6635444b6f75

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值