使用CryptoJS解密AES-256消息,该消息使用Java / Kotlin加密

时间:2019-02-05 00:10:37

标签: javascript java encryption kotlin cryptojs

我尝试解密在Java后端加密的消息。

为此,我准备了这个小提琴: http://jsfiddle.net/Lwp15e8z/1/

var secretKeyHash = CryptoJS.SHA256('mySecret')

var bytes = 
  CryptoJS.AES.decrypt(
    CryptoJS.enc.Base64.parse(
      "mB7DRFjMdC1cG+twH3jKDiWcPGWypqwHlFqf1vOJpC8="), 
      secretKeyHash, 
      {
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
      })

console.log("Result: ", bytes.toString(CryptoJS.enc.Utf8))

不知何故,我得到了一个空的bytes WordArray而不是解密的文本。

有什么想法我在做什么错吗?

参数为:

  • 算法:AES / CBC / PKCS5Padding
  • 密码:mySecret
  • 加密的Base64:mB7DRFjMdC1cG + twH3jKDiWcPGWypqwHlFqf1vOJpC8 =

后端代码的工作方式如下:

import shadow.com.google.common.hash.Hashing
import shadow.com.google.common.io.BaseEncoding
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec

fun aes256Encrypt(block: ByteArray, key: ByteArray): ByteArray {
    val secretKey = SecretKeySpec(
            Hashing.sha256().hashBytes(key).asBytes(), "AES")
    val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
    cipher.init(Cipher.ENCRYPT_MODE, secretKey)
    return cipher.doFinal(block)
}

fun main(args: Array<String>) {
    println(BaseEncoding.base64().encode(
            aes256Encrypt("Hello World ".toByteArray(), "mySecret".toByteArray())))
}

我已经从cryptojs文档中进行了观察:https://cryptojs.gitbook.io/docs/#ciphers

0 个答案:

没有答案