虽然OpenSSL工具可以使用SM2算法来生成并校验证书,但是在TLS握手过程中主要支持RSA和ECC算法作为公钥加密算...
本文使用OpenSSL工具生成国密算法SM2的三级CA证书,组成证书链,并使用证书链签名客户端证书和服务端证书。 可以通过证书链对生成的客户端和服务端证书进行校验。 虽然OpenSSL工具可以使用SM2算法来生成并校验证书…
主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 1、SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 2、SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种...
O2SSM2Cipher *cipher = [O2SSM2Cipher EC_Fp_X9_62_256V1];//这里是Fp通用曲线,可自定义椭圆曲线系统 NSData *cipherData = [O2SSMxHelper sm2DoEncrypt:plainData publicKey:publicKey cipher:cipher cipherMode:O2SSM2CipherModeC1C2C3];//加密 //sm2 解密 //私钥 NSString *privateKey = @"EFA93286160...
OpenSSL 对 SM2 加密结果进行了 ASN1 编码,解密时也是要求密文编码格式为 ASN1 格式,其他平台加解密可能需要 C1C3C2 拼接的原始密文,所以需要编码解码。个别后端加解密是按照 C1C2C3 来拼接的,也可能是其他顺序,若无法加解密,与后台确认拼接顺序,自行拼接即可。
OpenSSL 对 SM2 加密结果进行了 ASN1 编码,解密时也是要求密文编码格式为 ASN1 格式,其他平台加解密可能需要 C1C3C2 拼接的原始密文,所以需要编码解码。个别后端加解密是按照 C1C2C3 来拼接的,也可能是其他顺序,若无法加解密,与后台确认拼接顺序,自行拼接即可。
BIGNUM *C1y; ASN1_OCTET_STRING *C3; ASN1_OCTET_STRING *C2; }; ASN1_SEQUENCE(SM2_Ciphertext) = { ASN1_SIMPLE(SM2_Ciphertext, C1x, BIGNUM), ASN1_SIMPLE(SM2_Ciphertext, C1y, BIGNUM), ASN1_SIMPLE(SM2_Ciphertext, C3, ASN1_OCTET_STRING), ...
OpenSSL 对 SM2 加密结果进行了 ASN1 编码,解密时也是要求密文编码格式为 ASN1 格式,其他平台加解密可能需要 C1C3C2 拼接的原始密文,所以需要编码解码。个别后端加解密是按照 C1C2C3 来拼接的,也可能是其他顺序,若无法加解密,与后台确认拼接顺序,自行拼接即可。 // 公钥 NSString *pubKey = @"0408E3FFF9505BC...
公开密钥系统使⽤的算法最流⾏的当属 RSA 算法,它由 Ronald Rivest、Adi Shamir 和 Lenoard Adleman 于上世纪 70 年代发明,该算法的安全性基于⼤数分解的难度,它的原理如下: 设:明⽂为P,密⽂为C,加密函数E(x),解密函数D(x); (1)⾸先选取⼀个公钥指数 e,同时⽣成两个...
所以调用方法rsa_digest_verify_final,调用rsa_verify() 如果是sm2类型,就是在sm2_sig.c中定义: static OSSL_FUNC_signature_digest_verify_final_fn sm2sig_digest_verify_final; 所以调用方法sm2sig_digest_verify_final,调用sm2sig_verify()