首页
学习
活动
专区
工具
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

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

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

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

相关·内容

共4个视频
共8个视频
新版【NPM】包管理工具 学习猿地
学习猿地
课程内容包括了解NPM的应用、安装npm和使用npm工具管理包、了解package.json文件和package.json文件解析,以及模块的基本应用、npm和yarn的对比和迁移。讲师:高洛峰 畅销书《细说PHP》作者。
共50个视频
轻松学会Laravel-项目篇(商城API) 学习猿地
学习猿地
Laravel框架是世界上最流行的PHP开发框架,没有之一。现在Laravel框架已成为大型互联网公司及PHP攻城狮们的首选框架。本项目作为学习Laravel的进阶项目, 所以更偏向Laravel以及常用第三方Api的使用, 更多的偏向技术层面, 弱化了项目的业务逻辑, 比如SKU的处理就相对简单。
领券