ECIES:使用Javascript加密并使用Java / Kotlin解密

悖论

我正在使用JavaScript中的eccrypto库通过ECIES算法(curve-secp256k1)进行加密。JS代码中加密生成的密码无法在Kotlin中解密。

这是Javascript代码。

var eccrypto = require("eccrypto");

eccrypto.encrypt(publicKeyA, Buffer.from("Sic Mundus Creatus Est")).then(function(encrypted) {
  val ciphertext = encrypted.ciphertext
  //the hex encoded ciphertext is then sent to the server
}

这是科特林的解密代码

val cipherBytes = DatatypeConverter.parseHexBinary(ciphertext)
val cipher: Cipher = Cipher.getInstance("ECIES", "BC") 
cipher.init(Cipher.DECRYPT_MODE, privateKeyA)
print( cipher.doFinal(cipherBytes) ) 

使用此代码进行解密,我得到了错误的块异常。

但是,如果我只是使用Java进行加密和解密,那没有问题。同样,使用Javascript进行加密和解密也可以正常工作。

我有什么想念的吗?

悖论

我找到了解决方案(或者说找出了实际的问题)。希望它对未来的开发者有所帮助:

javascript和Java实现之间的加密/解密不匹配是因为这些实现使用哈希算法和AES加密的不同参数。

使用BouncyCastle的Java ECIES实现具有糟糕的实现。它使用具有128位的AES,不使用安全的哈希算法,不对MAC进行可靠的检查,并且测试用例很少。

解决方法是,我现在使用Java的自定义书面ECIES实现,该实现使用SHA-512进行哈希,AES加密(使用256位密钥和AES / CBC / PKCS7Padding模式)。这个新的实现是eccryptojavascript库引擎在幕后使用的。现在,它们工作正常!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用 Java/Kotlin 加密/解密字符串

来自分类Dev

使用Java的RSA加密/解密

来自分类Dev

只需使用Javascript进行XOR加密并使用Java进行解密

来自分类Dev

使用Java进行RSA加密并使用JavaScript进行解密

来自分类Dev

使用mcrypt加密/解密

来自分类Dev

使用Java进行AES加密和解密

来自分类Dev

如何正确使用kotlin解密C ++ Aes Rijndael CBC?

来自分类Dev

使用Java的AES加密和使用Java的解密

来自分类Dev

使用PHP mcrypt加密后,使用Javascript CryptoJS解密AES

来自分类Dev

如何使用JavaScript库使用椭圆曲线解密加密消息?

来自分类Dev

无法使用加密解密cryptocurrencyValue

来自分类Dev

使用加密加密后无法解密数据

来自分类Dev

如何在 javascript 中解密由 JAVA 使用 AES 加密的文件

来自分类Dev

使用CryptoJS在javascript中进行AES加密/解密

来自分类Dev

无法使用OpenSSL通过Javascript解密AES加密文件

来自分类Dev

使用C加密的数据的JavaScript AES 256解密问题

来自分类Dev

使用CryptoJS在javascript中进行AES加密/解密

来自分类Dev

使用openssl解密用Java加密的aes-gcm

来自分类Dev

使用bouncycastle将加密/解密从Java转换为C#

来自分类Dev

如何使用Java解码/解密MD5加密

来自分类Dev

在Java中使用加密文件而不解密到磁盘

来自分类Dev

在Java中使用rsa加密和解密大文件

来自分类Dev

使用Java在Android上解密OpenSSL加密的文件

来自分类Dev

使用Java NetBeans对图像进行rsa加密和解密

来自分类Dev

使用bouncycastle将加密/解密从Java转换为C#

来自分类Dev

在android中使用AES加密,在Java中解密

来自分类Dev

使用CryptoJS加密并使用PHP解密

来自分类Dev

使用CryptoJS加密数据并使用AESCipherService解密

来自分类Dev

使用BouncyCastle在Java中使用ECIES进行加密

Related 相关文章

  1. 1

    无法使用 Java/Kotlin 加密/解密字符串

  2. 2

    使用Java的RSA加密/解密

  3. 3

    只需使用Javascript进行XOR加密并使用Java进行解密

  4. 4

    使用Java进行RSA加密并使用JavaScript进行解密

  5. 5

    使用mcrypt加密/解密

  6. 6

    使用Java进行AES加密和解密

  7. 7

    如何正确使用kotlin解密C ++ Aes Rijndael CBC?

  8. 8

    使用Java的AES加密和使用Java的解密

  9. 9

    使用PHP mcrypt加密后,使用Javascript CryptoJS解密AES

  10. 10

    如何使用JavaScript库使用椭圆曲线解密加密消息?

  11. 11

    无法使用加密解密cryptocurrencyValue

  12. 12

    使用加密加密后无法解密数据

  13. 13

    如何在 javascript 中解密由 JAVA 使用 AES 加密的文件

  14. 14

    使用CryptoJS在javascript中进行AES加密/解密

  15. 15

    无法使用OpenSSL通过Javascript解密AES加密文件

  16. 16

    使用C加密的数据的JavaScript AES 256解密问题

  17. 17

    使用CryptoJS在javascript中进行AES加密/解密

  18. 18

    使用openssl解密用Java加密的aes-gcm

  19. 19

    使用bouncycastle将加密/解密从Java转换为C#

  20. 20

    如何使用Java解码/解密MD5加密

  21. 21

    在Java中使用加密文件而不解密到磁盘

  22. 22

    在Java中使用rsa加密和解密大文件

  23. 23

    使用Java在Android上解密OpenSSL加密的文件

  24. 24

    使用Java NetBeans对图像进行rsa加密和解密

  25. 25

    使用bouncycastle将加密/解密从Java转换为C#

  26. 26

    在android中使用AES加密,在Java中解密

  27. 27

    使用CryptoJS加密并使用PHP解密

  28. 28

    使用CryptoJS加密数据并使用AESCipherService解密

  29. 29

    使用BouncyCastle在Java中使用ECIES进行加密

热门标签

归档