‘壹’ SM2国密必须需要加密机吗,我搜了一下软算法也可以,有什么需要注意的
加密机通过硬件实现SM2,和通过软算法实现,理论上计算结果是一样的。
主要存在的问题在于安全性。
第一是密钥的使用和保护,如果你通过软算法实现,密钥必然要保存在你的PC或者服务器上,如何能够安全地保存是个问题。
第二是计算过程,用软算法实现必然要在服务器内存中进行加解密计算,这也是存在安全隐患的。而加密机实现的话,可以认为是个安全的计算环境,不容易被窃取。
第三是SM2算法计算中需要随机数参与,而随机数的随机性一般也是要靠硬件噪声源保证的,这也需要加密机内置的噪声源芯片。
所以如果你是企业生产环境使用,必然是建议使用加密机硬件设备。如果你只是自己随便测试,倒是问题不大。
‘贰’ java和openssl生成sm2区别
区别如下:
1.客户端是Java开发的,服务端是C开发的,之间使用了SM2算法进行密钥交换。
2.Java端是在网上找的一个比较流行的基于BC的SM2实现,依赖的bcprov-jdk15on,版本1.56。C端是用的OpenSSL。
3.服务端和客户端联调时发现了很多问题,SM2算法的公钥加解密一直没法调通,但Java应用加密的数据可以自己解密成功,C应用加密的数据自己也可以解密成功。
‘叁’ 什么是sm算法
国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。
1.SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。椭圆曲线参数并没有给出推荐的曲线,曲线参数的产生需要利用一定的算法产生。但在实际使用中,国密局推荐使用素数域256 位椭圆曲线,其曲线方程为y^2= x^3+ax+b(其中p是大于3的一个大素数,n是基点G的阶,Gx、Gy 分别是基点G的x与y值,a、b是随圆曲线方程y^2= x^3+ax+b的系数)。
2.SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。为了保证杂凑算法的安全性,其产生的杂凑值的长度不应太短,例如MD5输出128比特杂凑值,输出长度太短,影响其安全性SHA-1算法的输出长度为160比特,SM3算法的输出长度为256比特,因此SM3算法的安全性要高于MD5算法和SHA-1算法。
3.SM4算法:SM4分组密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。要保证一个对称密码算法的安全性的基本条件是其具备足够的密钥长度,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算法。
‘肆’ JAVA实现SM2
给你个参考地址: http://www.doc88.com/p-6532039462155.html 【
SM2密码算法的Java实现与评测
】
希望对你有帮助。
‘伍’ 国密算法中哪个算法是非对称加密算法
国密SM2是非对称密码算法。
非对称加密算法需要两个密钥:公开密钥和私有密钥。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法
特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快
‘陆’ c#的sm2和java区别
相同点:都是面向对象编程的语言,都能够实现面向对象的(封装,继承,多态)思想。不同点例如:
1、c#中的命名空间是namespace类似于Java中的package(包),在Java中导入包用import而c#中用using。
2、c#和Java都是从main函数入口的,但是c#中的main函数的首字母必须大写。
3、数据类型:Java跟c#基本都差不多,但是Java的String类型的首字母必须大写,而c#中可以小写也可以大写,还有布尔型,Java中是boolean,c#中是bool。
‘柒’ sm2算法公钥和私钥每次需要传输吗
sm2算法属于非对称加密算法,不用每次传输私钥。
下面是对非对称加密算法的网络解释:
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。
非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。
‘捌’ 如何把sm2算法封装到java
TF32A09安全芯片优势:
1.高速数据流加密:集成了多种高速硬件加密算法模块,加密步骤由专有模块实现,使数据流加密的速度可高达25MB/s,有一个质的飞跃。
2.国内首家具有USB主接口:拥有两个USB-OTG 接口,可根据应用需求设置成Host、Device 或OTG;支持多达6 个端点,可设置成多重复合设备,最大限度地满足用户的设计需求。
3.算法全面:集成多种通信接口和多种信息安全算法(SM1、SM2、S
‘玖’ 基于国密算法SM2 SSL证书的https加密, 如何实现
SSL握手协议的过程
国密SSL握手协议过程如下:
(1)交换Hello消息来协商密码套件,交换随机数,决定是否会话重用;
(2)交换必要的参数,协商预主密钥
(3)交换证书信息,用于验证对方
(4)使用预主密钥和交换的随机数生成主密钥
(5)向记录层提供安全参数
(6)验证双方计算的安全参数的一致性、握手过程的真实性和完整性