Java密钥库(一)

常见(摘要/加密)算法(归纳整理)


一、摘要算法:

定义:消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,可以被解密逆向的只有CRC32算法,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文

1.1 摘要算法主要特点:

1.1.1、无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。

1.1.2、一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。

1.1.3、消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。当然,如果真要去做,应该还是可以恢复的,在信息交换中,只要破译代价远远大于收益代价,我认为即是安全的。

……

综上,因此可以运用这些特点,来进行一些数据的加密,验证是否被篡改。

1.2 常见的消息摘要算法:

MD(Message Digest):消息摘要(MD2、MD4、MD5)

SHA(Secure Hash Algorithm):安全散列(SHA-1、SHA-224、SHA-256、SHA-384、SHA-512)

MAC(Message Authentication Code):消息认证码(HmacMD2、HmacMD4、HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512)


1.3 主要运用:

一般地,把对一个信息的摘要称为该消息的指纹或数字签名。数字签名是保证信息的完整性和不可否认性的方法。数据的完整性是指信宿接收到的消息一定是信源发送的信息,而中间绝无任何更改;信息的不可否认性是指信源不能否认曾经发送过的信息。因此摘要算法主要用于数据完整性校验、数据加密、文件校验、数字签名等等。


二、加密算法:

定义:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

2.1 分类:

加密算法主要分为对称加密和非对称加密。

对称式加密技术:对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key”。

非对称式加密技术:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个必需配对使用,否则不能打开加密文件。这里的“公钥”是指可以对外公布的,“私钥”则不能,只能由持有人一个人知道。

2.2 常见算法:

DES(Data Encryption Standard):对称算法数据加密标准,速度较快,适用于加密大量数据的场合;

3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;

RC2RC4对称算法,用变长密钥对大量数据进行加密,比 DES 快;

IDEA(International Data Encryption Algorithm)国际数据加密算法,使用 128 位密钥提供非常强的安全性;

RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,非对称算法


在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:哈希算法对称加密算法非对称加密算法

2.3 额外延伸(国密算法)

2.3.1、SM1是一种分组加密算法

对称加密算法中的分组加密算法,其分组长度、秘钥长度都是128bit,算法安全保密强度跟 AES 相当,但是算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用。

采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

2.3.2、SM2是非对称加密算法

它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。

SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。

2.3.3、SM3是一种密码杂凑算法

用于替代MD5/SHA-1/SHA-2等国际算法,适用于数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足电子认证服务系统等应用需求,于2010年12月17日发布。

它是在SHA-256基础上改进实现的一种算法,采用Merkle-Damgard结构,消息分组长度为512bit,输出的摘要值长度为256bit。

2.3.4、SM4是分组加密算法

跟SM1类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法。SM4算法与AES算法具有相同的密钥长度、分组长度,都是128bit。于2012年3月21日发布,适用于密码应用中使用分组密码的需求。

2.3.5、SM7也是一种分组加密算法

该算法没有公开。SM7适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。

2.3.6、SM9是基于标识的非对称密码算法

用椭圆曲线对实现的基于标识的数字签名算法、密钥交换协议、密钥封装机制和公钥加密与解密算法,包括数字签名生成算法和验证算法,并给出了数字签名与验证算法及其相应的流程。并提供了相应的流程。可以替代基于数字证书的PKI/CA体系。


三、Java常见证书类型和密钥库类型

3.1 证书:

数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份。因此数字证书又称为数字标识。数字证书对网络用户在计算机网络交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。

通俗来讲,证书是对现实生活中某个人或者某件物品的价值体现,比如古董颁发见证书 ,人颁发献血证,CET4证书,CET6证书等。通常数字证书会包含以下内容:

证书拥有者名称(CN),组织单位(OU)组织(O),城市(L) 区(ST) 国家/地区( C )。

证书的过期时间 证书的颁发机构 证书颁发机构对证书的签名,签名算法,对象的公钥等。

数字证书的格式遵循X.509标准。X.509是由国际电信联盟(ITU-T)制定的数字证书标准。

图一 常见证书类型

3.2 密钥库:

秘钥库概念:所有的公钥和私钥同证书都会被存储在密钥库中,因为证书需要被签名,签名必须使用“非对称加密算法”加“HASH算法”,所以一般是MD5WithRSA或者 SHA1WithRSA。

图二 常见密钥库类型



四、运用Java的keytool命令生成证书

这里以Windows10系统,jdk8为例。

4.1 准备步骤:

安装jdk8并配置环境变量,安装openssl(链接地址)并配置环境变量。


图三 Keytool命令路径

生成"PKCS12"密钥库命令:

keytool -genkey -alias secret -keypass 123456 -keyalg RSA -keysize 2048 -validity 365 -keystore  secret.p12

图四 生成PKCS12密钥库

生成"JKS"密钥库命令:

keytool -genkeypair -alias secret -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -dname "CN=secret,OU=无,O=无,L=中国,S=中国,C=中国" -keystore secret.jks -storepass 123456


CN为你的姓名

OU为你的组织单位名称

O为你的组织名称

L为你所在的城市名称

S为你所在的省份名称

C为你的国家名称

图五 生成JKS密钥库命令

-alias :证书别名

-keypass:证书密码

-keyalg:证书算法

-keysize:证书容量

-validity:证书有效期天数

-keysotre:证书保存名

-genkey:生成证书文件



根据密钥库得到证书和公钥

keytool -list -rfc -keystore secret.jks | openssl x509 -inform pem -pubkey

-rfc:表示以base64输出文件,否则以二进制输出。



用itext7电子签章,添加BC


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 网络基础知识 计算机诞生 “第一台计算机(ENIAC)于1946年2月,在美国诞生。提出程序存储的是美国的数学家冯...
    水中的蓝天阅读 3,021评论 0 0
  • SM2:非对称算法,为国家密码管理局公布的公钥算法,其加密强度为256位。SM2椭圆曲线公钥密码算法是我国自主设计...
    七离_82cd阅读 5,673评论 0 0
  • 传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 安全性 http协议:是超文本传输协议,信息是明文传...
    谢_ffd1阅读 1,562评论 0 0
  • 1.网络 1.网络七层协议有哪些? 物理层:主要功能:传输比特流;典型设备:集线器、中继器;典型协议标准和应用:V...
    _我和你一样阅读 9,098评论 1 38
  • RSA的起源 1976年以前所有的加密方法都是同一种模式:加解密双方使用同一种规则(简称“密钥”)。这种加密方式被...
    崔希羽阅读 5,102评论 0 1

友情链接更多精彩内容