【问题标题】:My front end (android) uses Java AES encryption while the backend Api (NodeJS) uses CryptoJS我的前端(android)使用 Java AES 加密,而后端 Api(NodeJS)使用 CryptoJS
【发布时间】:2019-01-10 17:21:10
【问题描述】:

我正在尝试在 Android 应用 (Java) 上执行简单的加密/解密。 NodeJS编写的后端Api使用cryptoJS进行加密/解密如下:

encryptRequest(responseBody) {
let cipherRequest: string = CryptoJS.AES.encrypt(
  requestBody,
  randomKey
);

return cipherRequest;
}

结果如下:

加密:

U2FsdGVkX19O+sxMy+7X2mPkUwx7/g8NBNyLj2K/XeTO/w8q5XPGDLP4iQOja4Y4XCR8fMDF1s4aMDhaUNDdgaXXBUcKazFk7sj7xiQ7h+jpan2ta43xkudvfVGTainO9vrSfznTsdjxa5Zmq3+kGYQZ2Eyt6lB8OHDPKFXcbRbR5M7puMnu/yGnBxOSN+N4qonANcOVLhV59aLG/J+eheVFfJOPYWZSc9NE5/tdbSvPO7FZdrHtPiTWVxkAlRigMETyBl71lz1JtyN3cs8PJw==

解密:

{ “用户名”:“我的用户名”, "accountType": "用户", “平台”:“移动”, “版本”:“7.0.0”, “密码”:“vivcXZFIqICjQB32aKSnvcVibEnmpGskMCT6Fv7aWnw=” }

我正在使用这个库https://github.com/scottyab/AESCrypt-Android在前端解密,但返回的值始终为空,使用相同的密钥。

Android 代码

try {
  AESCrypt.decrypt(randomKey, responseBody); // no value is returned
}catch (GeneralSecurityException e){

}

在没有图书馆的情况下,我可以通过什么方式获得解密数据,研究帖子上的其他解决方案似乎很复杂,我几乎无法理解。

【问题讨论】:

  • 不要使用 CryptoJS 等文档记录不佳的库,这会使代码很难移植到其他平台。
  • 同意。 CryptoJS 的文档几乎为零,而且它确实拥有的文档很模糊。为什么不能使用内置节点crypto模块?

标签: java android encryption aes


【解决方案1】:

我的方法是 1)查找 CryptoJS 文档,特别是它们的默认 AES 配置参数 2)在 java 端镜像这些参数。假设您没有尝试任何花哨的东西,则不需要图书馆,https://docs.oracle.com/javase/7/docs/api/javax/crypto/Cipher.html 应该让您在大约 15 分钟内起床并开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多