这是我在Node.js:
var crypto = require('crypto')
function encryptstring(str) {
var cipher = crypto.createCipheriv('aes-256-cbc', 'NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd', 'TestingIV1234567'),
encrypted = cipher.update(str, 'utf-8', 'base64');
encrypted += cipher.final('base64');
return encrypted;
}
console.log(encryptstring("Testing 111111111111111111111111111111111111111111"))
返回:w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/lbwbbg1xoor7i/DAtESJGdweKG6nL9m8RfewA==
这就是我的围棋:
package main
import (
"crypto/aes"
"crypto/cipher"
"encoding/base64"
"fmt"
)
// decrypt from base64 to decrypted string
func decrypt(key []byte, iv []byte, cryptoText string) string {
ciphertext, _ := base64.URLEncoding.DecodeString(cryptoText)
block, err := aes.NewCipher(key)
if err != nil {
panic(err)
}
if len(ciphertext) < aes.BlockSize {
panic("ciphertext too short")
}
ciphertext = ciphertext[aes.BlockSize:]
stream := cipher.NewCFBDecrypter(block, iv)
stream.XORKeyStream(ciphertext, ciphertext)
return fmt.Sprintf("%s", ciphertext)
}
func main() {
encKey := "NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd"
iv := "TestingIV1234567"
stringtodecrypt := "w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA=="
stringtodecrypt = decrypt([]byte(encKey), []byte(iv), stringtodecrypt)
fmt.Println(string(stringtodecrypt))
}
最终返回_▒▒▒6.▒▒d、 O▒ob“▒
很多围棋代码都是从https://gist.github.com/manishtpatel/8222606
我也尝试过:如何在golang中解密在nodejs中加密的AES256位密码?(在本例中,经过一些修改,如
hex.DecodeString
),但它会抛出一个错误,提示panic:crypto/cipher:input not full blocks
这是我尝试的代码:
func main() {
encKey := "NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd"
iv := "TestingIV1234567"
stringtodecrypt := "w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA=="
block, err := aes.NewCipher([]byte(encKey))
if err != nil {
panic(err)
}
mode := cipher.NewCBCDecrypter(block, []byte(iv))
mode.CryptBlocks([]byte(stringtodecrypt), []byte(stringtodecrypt))
fmt.Println(string(stringtodecrypt))
}
我到处找了很多,但我似乎找不出答案。
我做错了什么?
您的第二次尝试更接近,但您没有首先解码base64字符串。
如果您使用密码包中的CBCDecrypter
示例,您将得到如下内容:
encKey := "NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd"
iv := "TestingIV1234567"
ciphertext, err := base64.StdEncoding.DecodeString("w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA==")
if err != nil {
panic(err)
}
block, err := aes.NewCipher([]byte(encKey))
if err != nil {
panic(err)
}
if len(ciphertext)%aes.BlockSize != 0 {
panic("ciphertext is not a multiple of the block size")
}
mode := cipher.NewCBCDecrypter(block, []byte(iv))
mode.CryptBlocks(ciphertext, ciphertext)
fmt.Printf("%s\n", ciphertext)
https://play.golang.org/p/16wV2UJ5Iw
问题内容: 这是我在Node.js中拥有的: 返回: 这就是我在Go中所拥有的: 最终返回 许多Go代码都来自https://gist.github.com/manishtpatel/8222606 我也尝试过此方法:如何在golang中解密在nodejs中加密的AES256位密码?(在这种情况下,无需进行一些修改),但会抛出错误 这是我尝试的代码: 我搜索了很多东西,但似乎无法弄清楚。 我究竟做
问题内容: 我这样在Node.js中加密了一个字符串。 我注意到nodejs中的缓冲区就像十六进制,但每2个连续字符都成对出现。因此,如果我将其转换为十六进制,则长度只有一半。 例: 缓冲: 十六进制: 现在,我在aes256中使用的密钥的长度不能为64。这里,缓冲区的长度为32,十六进制的长度为64。 我想在golang中解密此密码,我将不得不使用此密钥和iv对其进行解密。 golang中的ae
注意:这只是为个人使用和学习,我不是试图滚动我自己的加密为公众使用。 我需要AES256加密一个字符串,但是我当前的尝试在十六进制解码时最终得到了一个类似server side的字符串。当十六进制解码时,它应该是一个有效的utf8 base64字符串,然后可以将其解码为原始字符串。这与这里提供的解决方案类似,但是salt并不是实际问题(尽管答案被接受),并且我无法在使用之前通过十六进制解码iv来抑
本文向大家介绍Golang加密解密之RSA(附带php),包括了Golang加密解密之RSA(附带php)的使用技巧和注意事项,需要的朋友参考一下 RSA加密算法简史 RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在
我正在尝试在Go中加密数据,并使用带有PKCS7填充的AES CBC模式在Angular中解密。但是当我尝试在Angular中解密数据时,它没有返回任何内容 Go代码: Angular/CryptoJs代码: 我从加密JS解密方法中得到一个空响应。 cryptoJS的iv值应该是多少?
这是一个错误: 1.JS