首页 > 解决方案 > Angular Crypto-JS 中的加密和 PHP 中的解密 & 反之亦然

问题描述

我正在尝试在 Angular 11 crypto-js(浏览器级别)和 PHP(服务器级别)中实现加密和解密。

随机生成的密钥和IV。

在 angular 和 php 中使用此密钥和 iv 进行加密和解密。

Key - 46d7093c56d9079406754989716a402d
Iv - df9fa46af13e5921

Angular CryptoJS 加密

let msg = "Testing";
let configuration = {
  keySize: 128 / 8,
  iv: CryptoJS.enc.Utf8.parse(iv),                                                                                                  
  mode: CryptoJS.mode.CBC
};
let encrypted = CryptoJS.AES.encrypt(msg, key, configuration).toString(); //U2FsdGVkX1+A5bM0Y4epRBtB/A2KYdupCgZXmSSu3hQ=

Angular CryptoJS 解密

let encrypted = "U2FsdGVkX1+A5bM0Y4epRBtB/A2KYdupCgZXmSSu3hQ=";
let configuration = {
  keySize: 128 / 8,
  iv: CryptoJS.enc.Utf8.parse(iv),                                                                                                  
  mode: CryptoJS.mode.CBC
};
let decrypted = CryptoJS.AES.decrypt(encrypted, key, configuration).toString(CryptoJS.enc.Utf8);

CryptoJS 的 PHP 加密

$Message = "Testing";

$encrypted = openssl_encrypt($Message, 'AES-128-CBC', $Key, 0, $Iv); #CC06me/4GIHVnoxdYgGTAQ==
$encrypted = openssl_encrypt($Message, 'AES-256-CBC', $Key, 0, $Iv); #cgWrkf8HfdDJg0VybavncQ==

CryptoJS 的 PHP 解密

$Key = "46d7093c56d9079406754989716a402d";
$Iv = "df9fa46af13e5921";
$Encrypted = "CC06me/4GIHVnoxdYgGTAQ==";
$encrypted = openssl_decrypt($Encrypted, 'AES-128-CBC', $Key, 0, $Iv);
$Encrypted = "cgWrkf8HfdDJg0VybavncQ==";
$encrypted = openssl_decrypt($Message, 'AES-256-CBC', $Key, 0, $Iv); 

由 angular cryptojs 进行的加密可以通过 angular cryptojs 解密,但不能在 php 中解密。我尝试了多个模块在 PHP 中进行解密,但我无法解密。

谁能建议我在这种解密方法中缺少什么。

提前致谢。

标签: phpangularcryptojs

解决方案


推荐阅读