p12 = d2i_PKCS12_bio(bio, NULL);
时间: 2024-06-01 19:08:31 浏览: 139
这段代码是将从一个 BIO 对象中读取的二进制数据转换为 PKCS #12 格式的密钥库。函数 d2i_PKCS12_bio 会将二进制数据解码并将结果存储在 PKCS12 结构体中。第二个参数为 NULL 表示默认使用密码库中的密码来解密私钥。如果你需要指定密码,可以传递一个 EVP_PKEY 结构体作为第二个参数。
相关问题
d2i_PKCS12_bio函数原型
d2i_PKCS12_bio函数原型如下:
```c
PKCS12 *d2i_PKCS12_bio(BIO *bp, PKCS12 **p12);
```
该函数从BIO中解析DER编码的PKCS#12结构,返回PKCS12结构体指针。如果p12指针不为NULL,则将解析的结果存储在*p12指向的指针中。
参数说明:
- bp:BIO结构体指针,指向包含DER编码的PKCS#12数据的BIO对象。
- p12:PKCS12结构体指针的指针,如果不为NULL,则将解析结果存储在*p12指向的指针中。
返回值:
解析成功返回PKCS12结构体指针,解析失败返回NULL。
改正:DECLARE i_key RAW(32); BEGIN i_key :=UTL_RAW.cast_to_raw('618272'); UPDATE SALARY SET SalaryAmount = DBMS_CRYPTO.ENCRYPT( src=>UTL_RAW.CAST_TO_RAW(TO_CHAR(SalaryAmount)), typ=>DBMS_CRYPTO.AES_CBC_PKCS5, key=>i_key, iv=>NULL ) WHERE SalaryAmount IS NOT NULL; END; /SELECT SalaryAmount FROM SALARY;
修改后的代码如下:
DECLARE
i_key RAW(32);
BEGIN
i_key := UTL_RAW.cast_to_raw('618272');
UPDATE SALARY
SET SalaryAmount = DBMS_CRYPTO.ENCRYPT(
src => UTL_RAW.CAST_TO_RAW(TO_CHAR(SalaryAmount)),
typ => DBMS_CRYPTO.AES_CBC_PKCS5,
key => i_key,
iv => NULL
)
WHERE SalaryAmount IS NOT NULL;
COMMIT;
SELECT DBMS_CRYPTO.DECRYPT(
src => SalaryAmount,
typ => DBMS_CRYPTO.AES_CBC_PKCS5,
key => i_key,
iv => NULL
) AS Decrypted_SalaryAmount
FROM SALARY;
END;
/
这个代码块将会将 SALARY 表中的 SalaryAmount 列进行加密,并且将其更新为加密后的值。修改后的代码添加了一个 COMMIT 语句,以确保更新操作被提交。同时,还添加了一个 SELECT 语句,用于解密 SalaryAmount 并返回其原始值。
阅读全文