求助,关于aes加密的。
发布于 6 年前 作者 Gitforxuyang 3637 次浏览 来自 问答

一个加密场景,对方使用的是java。然后他们使用KeyGenerator和SecureRandom配合秘钥字符串来生成实际秘钥。 然后在node里我们能实现生成相应的秘钥吗?期待大神的回答。

9 回复

使用crypto模块 以下仅供参考 下面的例子加了iv 你可以使用java的发过来的aeskey加密你的aeskey返回给他,具体的aeskey可以随机生成,然后你这边可以根据策略组合java第一次给你的key和你自己生成的key来加密后面需要通信的数据,每次新的会话双方都从新生成key,两边都遵守一样的规则 const key = crypto.randomBytes(32).toString(‘hex’).slice(0, 24); // 模拟的aes key const iv = crypto.randomBytes(32).toString('hex).slice(0, 10); const cipher = crypto.createCipheriv(‘aes-256-cbc’, key, iv); const msg= ‘balabala’; cipher.setAutoPadding(true); encrypted += cipher.update(msg, ‘utf8’, ‘hex’); encrypted += cipher.final(‘hex’);

@phper-chen 感谢您的回答。 但我感觉你没有太理解我的意思。 我遇到的问题是我和服务商对接,约定使用aes对数据进行加密传输。然后服务商给了我key, 但是,服务商在验证加密的时候使用了java的SecureRandom类,将约定的key作为种子进行生成秘钥。 我的问题就是我没在node上找到跟java SecureRandom功能相同的采用某个种子生成秘钥的代码。所以没办法直接对接。

然后我现在采用的方案是,对方给了我秘钥后,我自己用java生成一遍。 等于说手动的使用java对秘钥再处理,然后使用node进行加密通信。暂未找到更好的方案。欢迎有更好解决方案的大神赐教。

感谢!

@Gitforxuyang 这种key都是随机生成的啊 如何定加密方案要看你们自己了

@phper-chen 也不是完全随机的。 java的SecureRandom类在使用某个内容作为种子时,只要种子不变。随机生成出来的内容也是不变的。

@Gitforxuyang 实在搞不定的话可以试试 node-java

[CNodeMD]

@Hallelujah828 xiongdei,赞是什么鬼。QAQ

@dbit-xia 是个办法,受教了。

回到顶部