gpt4 book ai didi

go - 跨平台AES CryptLib

转载 作者:行者123 更新时间:2023-12-03 10:09:01 24 4
gpt4 key购买 nike

我正在尝试转换Crypt Lib in js的逻辑,我有现有的android应用程序,并且该API位于c Sharp中,我想转换加密和解密逻辑。
我尝试了多种版本,您可以检查代码:Tried code
我有一个要解密的样本数据,数据是:

{"Data":"bvtkHfZiTsY0CX6QmHhCboBwXeY9RZVPpdhhdIy6aSwCTVI7YiEGha1aXTIKY4BocGdNIbWkreQHZcTk4WE6F2tQLoVyWERYCGZotbDzxxs=","IV":"Vmr-uU5mA2_Zr_13"}
在这里,我在Data和IV中有加密的数据,因此当我尝试解密此数据时,找不到任何解决方案。所有的加密和解密功能都在csharp和android代码中。但是我想在golang中转换相同的逻辑。
Node中的逻辑
我已经试过这段代码:
    iv := []byte("Vmr-uU5mA2_Zr_13")
key := []byte("<Secret_Key")

text := []byte("bvtkHfZiTsY0CX6QmHhCboBwXeY9RZVPpdhhdIy6aSwCTVI7YiEGha1aXTIKY4BocGdNIbWkreQHZcTk4WE6F2tQLoVyWERYCGZotbDzxxs=")

cipherBlock, err := aes.NewCipher(key)
if err != nil {
log.Fatal(err)
}

cipher.NewCBCDecrypter(cipherBlock, iv).CryptBlocks(text, text)
fmt.Println(string(text))
完整的 link代码,我得到了错误:
crypto/aes: invalid key size 64

最佳答案

看来您需要将keytext字符串正确解码为 byte slice ,而不仅仅是将其转换。下面的代码有效,尽管我不确定解码后的消息应该是什么样子...

package main

import (
"encoding/hex"
"encoding/base64"
"crypto/cipher"
"crypto/sha256"
"crypto/aes"
)

func main() {
iv := "Vmr-uU5mA2_Zr_13"
key := "<Secret_Key>"
ciphertext := "bvtkHfZiTsY0CX6QmHhCboBwXeY9RZVPpdhhdIy6aSwCTVI7YiEGha1aXTIKY4BocGdNIbWkreQHZcTk4WE6F2tQLoVyWERYCGZotbDzxxs="

hash := sha256.Sum256([]byte(key))
key = hex.EncodeToString(hash[:])[:32]

btext, err := base64.StdEncoding.DecodeString(ciphertext)
if err != nil {
println("Error decoding cipertext: ", err.Error())
return
}

aesCipher, err := aes.NewCipher([]byte(key))
if err != nil {
println("Error creating cipher: ", err.Error())
return
}

cipher.NewCBCDecrypter(aesCipher, []byte(iv)).
CryptBlocks(btext, btext)

println("Result: ", string(btext))
}

关于go - 跨平台AES CryptLib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64782331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com