php 和 go 解密 Rijndael256-CBC 加密的数据
php 解密 Rijndael256-CBC (也有认为是 AES-CBC-256) 加密的数据可以使用 phpseclib 库做解密
解密函数:
use phpseclib3\Crypt\Rijndael;
// 需要 composer 安装 "phpseclib/phpseclib": "^3.0"
// Rijndael 解密函数
function rijndael256_decrypt($data, $key, $iv) {
$rijndael = new Rijndael('cbc');
$rijndael->setPreferredEngine("PHP");
$rijndael->setBlockLength(256);
$rijndael->setKey($key);
$rijndael->setIV($iv);
// 需根据加密数据选择是否使用
$rijndael->disablePadding();
$data = $rijndael->decrypt($data);
return $data;
}
测试数据:
// 测试函数
function decodeByAes($uid, $str) {
$data = hex2bin($str);
$iv = mb_substr($data, 0, 32);
$key = substr(md5($uid . "xBre2!@348*|AdedFjsDWy01"), 0, 16);
$data = mb_substr($data, 32);
$data = rijndael256_decrypt($data, $key, $iv);
return trim($data);
}
// 测试数据
$uid = "m2Ux0QezsImyNFdtDzYUBWuPf7Ir2AEwJP5l";
$str = "3365616430336134313637303438356562633734666333666136303361343062d9ac29251ae9a36ddb67f8f2ad55eea477239b4d53150feec4a01275d0b1f8b65ffc2f77774eb1203e26050d0f47273b0c35d663da0fa6ddb32b3e0f20cade3204d8f732a74f509c43251c088c523c79c87d02a91cfbc0ca0ff64e8c2e7fb4f6300c584ae84f7de531213747cd3ea50c3f3fa9fc430e784daab2f9777796b0c2";
$data = decodeByAes($uid, $str);
var_dump($data);
// 解密结果: ok ok Request:59ded5eecc800830975a4a1159933981 Hardware:803BB1A8-FFFFA277 License-Type:Demo Multi-Tenant:20 CAL:1000
go 解密 Rijndael256 加密的数据
import "github.com/deatil/go-cryptobin/cryptobin/crypto"
func main() {
uid := "m2Ux0QezsImyNFdtDzYUBWuPf7Ir2AEwJP5l"
str := "3365616430336134313637303438356562633734666333666136303361343062d9ac29251ae9a36ddb67f8f2ad55eea477239b4d53150feec4a01275d0b1f8b65ffc2f77774eb1203e26050d0f47273b0c35d663da0fa6ddb32b3e0f20cade3204d8f732a74f509c43251c088c523c79c87d02a91cfbc0ca0ff64e8c2e7fb4f6300c584ae84f7de531213747cd3ea50c3f3fa9fc430e784daab2f9777796b0c2"
data, _ := hex.DecodeString(str)
keyOld := uid + "xBre2!@348*|AdedFjsDWy01"
iv := data[:32]
data = data[32:]
keyOldMd5 := md5.Sum([]byte(keyOld))
key := hex.EncodeToString(keyOldMd5[:])
cyptde := crypto.FromBytes(data).
SetKey(key[:16]).
WithIv(iv).
Rijndael256().
CBC().
// 需根据加密数据选择使用补码方式
// PKCS7Padding().
NoPadding().
Decrypt().
ToString()
// 解密结果: ok ok Request:59ded5eecc800830975a4a1159933981 Hardware:803BB1A8-FFFFA277 License-Type:Demo Multi-Tenant:20 CAL:1000
}
go 版本更多对称加密可以查看 文档
以上就是解密 Rijndael256 加密数据的全部内容了
本作品采用《CC 协议》,转载必须注明作者和本文链接