「国密java」国密改造

博主:adminadmin 2023-03-17 16:46:07 362

本篇文章给大家谈谈国密java,以及国密改造对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

国密算法

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

国家密码管理局公布的公钥算法,其加密强度为256位

SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

由于SM1、SM4加解密的分组大小为128bit,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。

分组密码算法(DES和SM4)、将明文数据按固定长度进行分组,然后在同一密钥控制下逐组进行加密,

公钥密码算法(RSA和SM2)、公开加密算法本身和公开公钥,保存私钥

摘要算法(SM3 md5) 这个都比较熟悉,用于数字签名,消息认证,数据完整性,但是sm3安全度比md5高

总得来说国密算法的安全度比较高,2010年12月推出,也是国家安全战略,现在银行都要要求国际算法改造,要把国际算法都给去掉

C 语言实现

Go 语言

Java 语言

Go语言实现,调用 gmsm

javaclass类加密后 如何部署到tomcat

1.使用加密程序对classes下所有文件加密,加密之后所有的class文件后缀变为uikoo9,可以自己修改源代码

2.将原classes文件夹删除,将加密后的classes文件夹复制进去

3.修改context.xml

4.tomcat\lib下添加loader.class

5.启动tomcat!

求ECDSA的Java代码

【方案1】

package ECDSA;

import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;

import java.security.*;

import java.security.interfaces.ECPrivateKey;

import java.security.interfaces.ECPublicKey;

import java.security.spec.PKCS8EncodedKeySpec;

import java.security.spec.X509EncodedKeySpec;

public class Ecdsa {

  private static String src = "hello berber" ;

  public static void main(String []args){

      jdkECDSA();

  }

  public static void jdkECDSA(){

      // 1.初始化密钥

      try{

          KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC");

          keyPairGenerator.initialize(256);

          KeyPair keyPair = keyPairGenerator.generateKeyPair() ;

          ECPublicKey ecPublicKey = (ECPublicKey)keyPair.getPublic() ;

          ECPrivateKey ecPrivateKey = (ECPrivateKey)keyPair.getPrivate() ;

          // 执行签名

          PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(ecPrivateKey.getEncoded());

          KeyFactory keyFactory = KeyFactory.getInstance("EC") ;

          PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec) ;

          Signature signature = Signature.getInstance("SHA1withECDSA");

          signature.initSign(privateKey);

          signature.update(src.getBytes());

          byte []arr = signature.sign();

          System.out.println("jdk ecdsa sign :"+ HexBin.encode(arr));

          // 验证签名

          X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(ecPublicKey.getEncoded());

          keyFactory = KeyFactory.getInstance("EC");

          PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);

          signature = Signature.getInstance("SHA1withECDSA");

          signature.initVerify(publicKey);

          signature.update(src.getBytes());

          boolean bool = signature.verify(arr);

          System.out.println("jdk ecdsa verify:"+bool);

      }catch(Exception e){

      }

  }

}

Java数字签名——ECDSA算法

【方案2】

public class MyTest {

/**

* @param args

*/

public static void main(String[] args) {

new MyTest().getSign();

}

void getSign() {

// Get the instance of the Key Generator with "EC" algorithm

try {

KeyPairGenerator g = KeyPairGenerator.getInstance("EC");

ECGenParameterSpec kpgparams = new ECGenParameterSpec("secp256r1");

g.initialize(kpgparams);

KeyPair pair = g.generateKeyPair();

// Instance of signature class with SHA256withECDSA algorithm

Signature ecdsaSign = Signature.getInstance("SHA256withECDSA");

ecdsaSign.initSign(pair.getPrivate());

System.out.println("Private Keys is::" + pair.getPrivate());

System.out.println("Public Keys is::" + pair.getPublic());

String msg = "text ecdsa with sha256";//getSHA256(msg)

ecdsaSign.update((msg + pair.getPrivate().toString())

.getBytes("UTF-8"));

byte[] signature = ecdsaSign.sign();

System.out.println("Signature is::"

+ new BigInteger(1, signature).toString(16));

// Validation

ecdsaSign.initVerify(pair.getPublic());

ecdsaSign.update(signature);

if (ecdsaSign.verify(signature))

System.out.println("valid");

else

System.out.println("invalid!!!!");

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}}

java – 使用secp256r1曲线和SHA256算法生

怎么验证生成的Ecdsa签名是正确的呢,可以看下这篇文章:RSA,ECC,Ecdsa,国密SM2的签名,验签,加密

什么是SAML

SAML即安全断言标记语言,英文全称是Security Assertion Markup Language。它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。在SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域。 SAML是OASIS组织安全服务技术委员会(Security Services Technical Committee)的产品。

SAML(Security Assertion Markup Language)是一个XML框架,也就是一组协议,可以用来传输安全声明。比如,两台远程机器之间要通讯,为了保证安全,我们可以采用加密等措施,也可以采用SAML来传输,传输的数据以XML形式,符合SAML规范,这样我们就可以不要求两台机器采用什么样的系统,只要求能理解SAML规范即可,显然比传统的方式更好。SAML 规范是一组Schema 定义。

可以这么说,在Web Service 领域,schema就是规范,在Java领域,API就是规范。

SAML解决的 最重要 的需求是网页浏览器单点登录(SSO)。单点登录在内部网层面比较常见,(例如使用Cookie),但将其扩展到内部网之外则一直存在问题,并使得不可互操作的专有技术激增。(另一种近日解决浏览器单点登录问题的方法是OpenID Connect协议)

SAML 主要包括三个方面:

1.认证申明。表明用户是否已经认证,通常用于单点登录。

2.属性申明。表明 某个Subject 的属性。

3.授权申明。表明 某个资源的权限。

SAML就是客户向服务器发送SAML 请求,然后服务器返回SAML响应。数据的传输以符合SAML规范的XML格式表示。

SAML 可以建立在SOAP上传输,也可以建立在其他协议上传输。

因为SAML的规范由几个部分构成:SAML Assertion,SAML Prototol,SAML binding等

由于SAML在两个拥有共享用户的站点间建立了信任关系,所以安全性是需考虑的一个非常重要的因素。SAML中的安全弱点可能危及用户在目标站点的个人信息。SAML依靠一批制定完善的安全标准,包括SSL和X.509,来保护SAML源站点和目标站点之间通信的安全。源站点和目标站点之间的所有通信都经过了加密。为确保参与SAML交互的双方站点都能验证对方的身份,还使用了证书。

在SAML协议中,对协议的安全设计十分完整,包协议中定义的客户端、SP及IDP的交互流程,并且还使用了密码学对SAML中关键的交互数据进行了签名和加密处理。

1.对SAML数据进行签名

为有效的确保SAML的交互过程中的数据不被伪造和篡改,支持对任何SAML数据进行签名。特别是重要的SAML认证断言。

具体的,在本项目中使用了X.509格式的数字证书进行签名,使用了RSA公钥密码算法,SHA-256哈希算法,其密钥长度为1024位。

2.SAML认证断言的安全性设计:加密和断言有效期

在SAML的认证断言中,包含了大量的用户账号信息,因此十分有必要对其进行加密处理。

对SAML认证断言的加密同样支持包括国密算法和AES算法等多种对称加密算法,在本项目中,使用了AES算法,密钥长度为1024位,能够有效的保证SAML认证断言的保密性。

另外,为防止重放攻击,在设计中还对认证断言的有效期进行了限制,认证断言的有效期可配置,建议配置使用较短的有效期。

首先需要了解几个基本的服务方:

IDP:账号认证的服务方,如赛赋IDaaS作为IDP,主要就是完成认证

SP:向用户提供商业服务的软件(实体),比如禅道

Browser:用户方的浏览器,用户通过浏览器进行资源的访问和相关跳转完成身份的认证

“用户登录地址”,应用的SAML协议登录路径

“relayState地址”,应用认证成功后的跳转地址。

“AssertionConsumerServiceUrl”,应用接收统一身份认证

下面简单介绍使用基于SAML的SSO登录到WebApp1的过程

此图片说明了以下步骤。

用户尝试访问WebApp1。

相关文章: 什么是SSO

企业数据加密什么软件好?

合力天下数据防泄密系统(HL-dataAS)用于保护企业的知识产权、客户资料、财务数据、技术图纸、应用系统等机密信息化数据不外泄。简单地说,”合力天下”防泄密系统让企业机密数据和应用系统的重要资料“拷不走”、“屏幕截取不走”、“另存不走”、“打印不走” 、“内容复制不走”、“MSN、QQ、邮件发送不走”。

一、支持各种文件格式加密(CAD、OFFICE、PDF、图纸、计算机程序、课件、游戏动画、数码照片、视频…..),用户也可以根据自己的需要定制;支持出差人员管理;支持文档外发管理;防止涉密文档非法扩散。支持控制台审批解密,支持手机审批解密。 灵活的权限控制:只读、可写、可编辑、禁止删除;打印水印、禁止拍照等。

二、 支持局域网部署和互联网部署模式,支持总部和异地分支机构分别部署;支持单机部署模式;确保公司内部资料的相互流通。

三、支持各种应用系统:支持基于Windows的B/S、C/S的各种业务应用软件加密,如PDM、PLM、ERP、OA、CRM、CAM、HR、采编软件、流程管理软件、电子商务软件、财务软件、文档管理系统、网站服务器、云服务器、企业网盘、手机终端等。

四、 支持任意格式文档类型:Office、Open office、Wps、PDF、outlook、FOXMAIL、ARM、ANSYS、Easypro、OA系统、ERP、MSVISIO、 AutoCAD、Autodesk Inveator、Autovue、ACDSee、Pro/E、Inventor、CAXA、CAJviewer、Protel、PReS、Keil、Quartus、AVR Studio、 ARM Studio、Siemens Wicc、Xtcapp55、TurboCAD、开目CAD、TwinCAD、CATIA、Solid Edge、UG、PowerDraft、Photoline、清华天河CAD 、中望CAD、英泰CAD、浩辰CAD、凯思CAD、JEwelCAD、Code Wright、ULTRAEdit、Solidworks、SVN、ZDDS、IAR、PowerDesigner、FPWIN  GR、FX-PCS-DU-WIN-C、FXGPWIN、PhptoShop、DreamWeaver、MTcardEdit、CorelDraw、Fireworks、Flash、ACDSee、ZineMarker、 HITACHI Embedded workshop、HIGH-Performance Embedded workshop、Embedded workshop、CAM350、Matlab、 Labview、Illustrator、 MAYA、3D MAX、unity、realplay、media player、Cakewalk、Flash、LRC Editor、Lightscape、Beyond Compare、Java、Delphi、VS.Net、C、 VB、VC、C++、Java虚拟机、Source Insight、WINRAR、EDITplus、IBM ClearCase、PowerBuilder、PowerPCB、Powerlogic、Power mill 、数控传输软件、视频文件、编程ICC、打标机(票据打印)、CAMtastic、DELcam-Exchange、cimatron、Macrumedia、Microchip、 MasterCAM、FastCAM、MyEclipse、Eclipse、Tomcat、MultiGen Creator、FoxPro、Access、MSSQL、Oracle、WinMerge、XOREAX、InCrediBuid、 ZBrush3、JDPaint、BodyPaint 3D、英泰PDM、NTKO、KASS、WINRAR、WINRAR、SILK ROAD、ETMARK、海康威视监控视频、邮箱大师、安卓手机、苹果手机等各种文档格式,即可自定义加密任意文件格式。

五、支持以下操作系统(32位 64位):

        Windows XP、2003、2008、2012、win7、win8、win10; LINUX系统; 苹果MAC OS系统; 安卓(Android)系统 ,苹果 IOS 系统.

六、 支持中文、英文、俄、日文、德文、韩文、法文、西班牙文等各种语言网络环境,支持中文、英文、俄、日文、德文、韩文、法文、西班牙文等各种语言文档加密。

七、合力天下数据防泄密系统按功能分为以下版本:普及版 ,企业版 ,专业版,旗舰版。可以满足国内各类企事业、设计院所、政府机关单位部署。

国密算法在java怎么调用

国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法。具体包括SM1,SM2,SM3等,其中: SM2为国家密码管理局公布的公钥算法,其加密强度为256位。

国密java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于国密改造、国密java的信息别忘了在本站进行查找喔。