ASE加密解密PHP7.0+笔记

aes加密解密

class Aes {
    
    /**
     * 加密
     */
    public function encrypt($string) {
        $iv= md5(config('app.aesvi'),true);
        $strEncode= base64_encode(openssl_encrypt($string, 'AES-128-CBC',config('app.asekey'), OPENSSL_RAW_DATA , $iv));
        return $strEncode;
    }

    /**
     * 解密
     */
    public function decrypt($string) {
        $iv= md5(config('app.aesvi'),true);
        $decrypted_string = openssl_decrypt(base64_decode($string), 'AES-128-CBC', config('app.asekey'), OPENSSL_RAW_DATA, $iv);
        return $decrypted_string;
    }

}
Swift中提供了ASE加密解密的功能,可以使用CommonCrypto库来实现。下面是一个简单的示例代码: ```swift import CommonCrypto // 加密函数 func encryptAES(data: Data, key: Data, iv: Data) throws -> Data { let cryptLength = size_t(data.count + kCCBlockSizeAES128) var cryptData = Data(count: cryptLength) var numBytesEncrypted: size_t = 0 let cryptStatus = cryptData.withUnsafeMutableBytes { cryptBytes in data.withUnsafeBytes { dataBytes in key.withUnsafeBytes { keyBytes in iv.withUnsafeBytes { ivBytes in CCCrypt(CCOperation(kCCEncrypt), CCAlgorithm(kCCAlgorithmAES), CCOptions(kCCOptionPKCS7Padding), keyBytes, key.count, ivBytes, dataBytes, data.count, cryptBytes, cryptLength, &numBytesEncrypted) } } } } guard cryptStatus == kCCSuccess else { throw NSError(domain: "Encryption Error", code: Int(cryptStatus), userInfo: nil) } cryptData.removeSubrange(numBytesEncrypted..<cryptData.count) return cryptData } // 解密函数 func decryptAES(data: Data, key: Data, iv: Data) throws -> Data { let cryptLength = size_t(data.count + kCCBlockSizeAES128) var cryptData = Data(count: cryptLength) var numBytesDecrypted: size_t = 0 let cryptStatus = cryptData.withUnsafeMutableBytes { cryptBytes in data.withUnsafeBytes { dataBytes in key.withUnsafeBytes { keyBytes in iv.withUnsafeBytes { ivBytes in CCCrypt(CCOperation(kCCDecrypt), CCAlgorithm(kCCAlgorithmAES), CCOptions(kCCOptionPKCS7Padding), keyBytes, key.count, ivBytes, dataBytes, data.count, cryptBytes, cryptLength, &numBytesDecrypted) } } } } guard cryptStatus == kCCSuccess else { throw NSError(domain: "Decryption Error", code: Int(cryptStatus), userInfo: nil) } cryptData.removeSubrange(numBytesDecrypted..<cryptData.count) return cryptData } // 使用示例 let plaintext = "Hello, World!" let key = Data("01234567890123456789012345678901".utf8) let iv = Data("abcdefghijklmnop".utf8) let encryptedData = try encryptAES(data: Data(plaintext.utf8), key: key, iv: iv) print("Encrypted: \(encryptedData.base64EncodedString())") let decryptedData = try decryptAES(data: encryptedData, key: key, iv: iv) let decryptedText = String(data: decryptedData, encoding: .utf8) print("Decrypted: \(decryptedText ?? "")") ``` 上述代码中的`key`和`iv`需要根据实际情况来设置,其中`key`必须是16、24或32字节长度的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值