首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

aes-256-gcm使用PHP加密,使用javascript解密

AES-256-GCM是一种对称加密算法,它使用256位的密钥对数据进行加密和解密。在云计算领域中,AES-256-GCM常用于保护敏感数据的安全性。

在PHP中使用AES-256-GCM进行加密可以通过使用openssl扩展来实现。下面是一个示例代码:

代码语言:txt
复制
<?php
function encrypt($data, $key, $iv) {
    $cipher = "aes-256-gcm";
    $tag = null;
    $encryptedData = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv, $tag);
    return base64_encode($encryptedData . $tag);
}

$key = "YourEncryptionKey";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length("aes-256-gcm"));
$data = "Hello, World!";

$encrypted = encrypt($data, $key, $iv);
echo "Encrypted data: " . $encrypted;
?>

在上面的代码中,encrypt函数接受要加密的数据、密钥和初始化向量(IV)作为参数,并返回加密后的数据。使用openssl_encrypt函数进行加密,并将加密后的数据和认证标签(tag)进行Base64编码后返回。

要在JavaScript中解密AES-256-GCM加密的数据,可以使用Web Crypto API。下面是一个示例代码:

代码语言:txt
复制
function decrypt(encryptedData, key, iv) {
    return crypto.subtle.importKey(
        "raw",
        key,
        { name: "AES-GCM" },
        false,
        ["decrypt"]
    ).then(function (cryptoKey) {
        return crypto.subtle.decrypt(
            { name: "AES-GCM", iv: iv },
            cryptoKey,
            encryptedData
        );
    }).then(function (decryptedData) {
        return new TextDecoder().decode(decryptedData);
    });
}

var key = new Uint8Array([ /* YourEncryptionKey in Uint8Array format */ ]);
var iv = new Uint8Array([ /* Initialization Vector in Uint8Array format */ ]);
var encryptedData = "/* Encrypted data in Base64 format */";

var decrypted = decrypt(
    Uint8Array.from(atob(encryptedData), c => c.charCodeAt(0)),
    key,
    iv
).then(function (decryptedData) {
    console.log("Decrypted data: " + decryptedData);
});

在上面的代码中,decrypt函数接受加密的数据、密钥和初始化向量(IV)作为参数,并返回解密后的数据。使用Web Crypto API的crypto.subtle.importKeycrypto.subtle.decrypt方法进行解密,并使用TextDecoder将解密后的数据转换为字符串。

需要注意的是,为了在JavaScript中使用密钥和IV,需要将它们转换为Uint8Array格式。同时,加密数据在JavaScript中是以Base64格式表示的,需要使用atob函数将其解码为Uint8Array

推荐的腾讯云相关产品和产品介绍链接地址:

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券