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:1000go 解密 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 协议》,转载必须注明作者和本文链接
 
           deatil 的个人博客
 deatil 的个人博客
         
             
             
                     
                     
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: