JAVA加密解密
JAVA加密解密技术,介绍了常用的编码方式、摘要运算、对称/非对称加解密算法的JAVA实现
蒋固金
天下大事必作于细,天下难事必作于易
展开
-
JCodec用法
JCodec包含了常用的编码、加解密的JAVA实现。Maven:<!-- https://mvnrepository.com/artifact/com.jianggujin/JCodec --><dependency> <groupId>com.jianggujin&l原创 2018-08-11 13:00:29 · 3530 阅读 · 1 评论 -
JAVA加密解密之Base64
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL...原创 2016-01-16 13:54:48 · 5723 阅读 · 2 评论 -
JAVA加密解密之凯撒加密(Caesar cipher)算法
凯撒加密算法简介凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为z,x会被替换为a原创 2016-12-03 19:38:04 · 13568 阅读 · 1 评论 -
JAVA循环冗余校验(CRC32)
CRC32简介CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。原创 2016-12-03 14:23:14 · 11480 阅读 · 0 评论 -
JAVA加密解密之消息摘要算法(MessageDigest)
消息摘要算法简介消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题,适合于分布式网络上使用。原创 2016-12-02 18:48:01 · 7772 阅读 · 0 评论 -
JAVA字节数组转十六进制字符串
常见的MD5等摘要运算的结果都是字节数组,通常我们见到的是转换后的十六进制字符串,今天就分享一下转换的代码。package com.jianggujin.codec;public class JHex { private static final char[] DIGITS_UPPER = { '0', '1', '2', '3', '4', '5', '6', '7', '8...原创 2018-08-04 13:03:38 · 3847 阅读 · 2 评论 -
JAVA加密解密之消息认证码算法(Message Authentication Code,MAC)
消息认证码算法简介在密码学中,消息认证码(英语:Message authentication code,缩写为MAC),又译为消息鉴别码、文件消息认证码、讯息鉴别码、信息认证码,是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。原创 2016-12-02 19:05:39 · 5891 阅读 · 0 评论 -
JAVA加密解密之对称加密
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。原创 2016-01-18 14:50:52 · 2414 阅读 · 0 评论 -
JAVA加密解密之3DES(TripleDES)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。原创 2016-01-18 15:18:08 · 5474 阅读 · 6 评论 -
JAVA加密解密之DSA(Digital Signature Algorithm)算法
DSA算法简介DSA-Digital Signature Algorithm是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。原创 2016-12-02 22:45:25 · 15569 阅读 · 0 评论 -
JAVA加密解密之RSA算法
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。原创 2016-01-18 15:46:14 · 3393 阅读 · 0 评论 -
JAVA加密解密之DH(Diffie-Hellman)算法
Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitfield Diffie与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用原创 2016-01-18 15:38:03 · 10179 阅读 · 10 评论 -
JAVA加密解密之PBE(Password Based Encryption)算法
(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。原创 2016-01-18 15:34:15 · 3771 阅读 · 0 评论 -
Cipher输入输出流
在java中提供了CipherInputStream和CipherOutputStream用于加解密的流处理,但是我在实际使用中发现会有一些莫名其妙的问题,数据丢失等,所以重写了两个流处理类。package com.jianggujin.codec.util;public interface JCipherStream { /** * 长度为0的字节数组, 在编码解码时需...原创 2018-08-04 12:35:14 · 1250 阅读 · 1 评论 -
JAVA加密解密之数字证书
系统之间在进行交互的时候,我们经常会用到数字证书,数字证书可以帮我们验证身份等。原创 2016-12-06 14:37:46 · 6535 阅读 · 5 评论 -
commons-codec使用介绍
commons-codec是Apache开源组织提供的用于摘要运算、编码的包。在该包中主要分为四类加密:BinaryEncoders、DigestEncoders、LanguageEncoders、NetworkEncoders。原创 2016-04-14 09:56:34 · 19759 阅读 · 0 评论