登录
首页 >  Golang >  Go问答

跨平台 AES CryptLib

来源:stackoverflow

时间:2024-04-17 08:54:33 152浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《跨平台 AES CryptLib》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在尝试在 js 中转换 crypt lib 的逻辑,我有现有的 android 应用程序,并且 api 在 c sharp 中,我想转换加密和解密逻辑。

我尝试了多种变体,您可以检查代码:尝试过的代码

我有一个想要解密的示例数据,数据是:

{"data":"bvtkhfzitsy0cx6qmhhcbobwxey9rzvppdhhdiy6aswctvi7yiegha1axtiky4bocgdnibwkreqhzctk4we6f2tqlovywerycgzotbdzxxs=","iv":"vmr-uu5ma2_zr_13"}

这里我在 data 和 iv 中有加密数据,所以当我尝试解密这些数据时,我找不到任何解决方案。所有的加密和解密功能都在csharp和android代码中。但我想在golang中转换相同的逻辑。

node 中的逻辑

我尝试过这段代码:

iv := []byte("vmr-uu5ma2_zr_13")
    key := []byte("

代码的完整链接,我收到错误:

crypto/aes: invalid key size 64

解决方案


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

package main

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

func main() {
    iv := "Vmr-uU5mA2_Zr_13"
    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))
}

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>