我们的项目是使用非对称加密 nacl.box
以及短暂的钥匙:
encrypt(pubKey, msg) {
if (typeof msg !== 'string') {
msg = JSON.stringify(msg)
}
let ephemKeys = nacl.box.keyPair()
let msgArr = nacl.util.decodeUTF8(msg)
let nonce = nacl.randomBytes(nacl.box.nonceLength)
p(`naclRsa.pubKey=${this.pubKey}`)
let encrypted = nacl.box(
msgArr,
nonce,
nacl.util.decodeBase64(pubKey),
ephemKeys.secretKey
)
let nonce64 = nacl.util.encodeBase64(nonce)
let pubKey64 = nacl.util.encodeBase64(ephemKeys.publicKey)
let encrypted64 = nacl.util.encodeBase64(encrypted)
return {nonce: nonce64, ephemPubKey: pubKey64, encrypted: encrypted64}
}
我们现在有 node.js
然后解密这些消息的应用程序。我们想选择使用 jvm
某些功能的语言。似乎没有多少老牌球员能胜任这项工作 tweet-nacl
上 jvm
但看起来 tweetnacl-java
https://github.com/instantwebp2p/tweetnacl-java
及其建议的实施
° tweetnacl-fast
https://github.com/instantwebp2p/tweetnacl-java/blob/master/src/main/java/com/iwebpp/crypto/tweetnaclfast.java
很受欢迎。
目前还不清楚模拟的是什么 asymmetric
用临时密钥加密在那个图书馆里。支持吗?请注意,我对其中任何一种都持开放态度 java
或者 kotlin
如果在 tweetnacl-java
.
1条答案
按热度按时间7gcisfzg1#
TweetJava是TweetJS的一个端口。因此,可以预期两者提供相同的功能。至少对于posted方法是这样的,它可以在java端用tweetnaclfast实现,如下所示:
为了证明双方都是兼容的,在下面的例子中,明文在java端加密,在javascript端解密:
首先,javascript端需要一个密钥对,它的公钥是(
publicKeyJS
)传递到java端。javascript端的密钥对可以如下生成:具有以下示例输出:
java端的加密使用
encrypt
方法张贴在上面(和publicKeyJS
):具有以下示例输出:
js端的解密给出了原始的明文(使用
secretKeyJS
):