JAVA加密与解密:java
消息摘要算法:MD,SHA,MAC
对称加密算法:DES,3DES,AES
非对称加密算法:RSA
签名算法:RSA,DSA
node
消息摘要与签名的区别:消息摘要保证数据完整性,没有被篡改;签名确保消息是由发送方发送;签名算法 中也会涉及的摘要;签名算法实际上就是消息摘要与非对称加密算法的合体;
签名与加密:公钥加密,私钥解密(通常业务场景下如此);私钥签名,公钥验签
算法
DES:
密钥长度56-64位
使用方式:apache
1)发送方构建密钥,并公布密钥安全
2)发送方使用密钥对数据加密,并发送加密数据服务器
3)接收方使用密钥对接收数据解密并发
AES:
解决3DES加密效率低,速度慢的问题,成为DES算法的替代者
使用方式同DES工具
RAS:
非对称加密算法post
jdk加密相关jar包以及package:
编码
rt.jar: java.security.*包,定义了消息摘要算法的实现(不包括mac算法)以及加解密算法的使用接口
jce.jar:java.crypto.*包,DES,3DES以及AES中使用较多,RSA中会用到Cipher类。其中包含了DES,3DES以及AES的实现;比较经常使用的类Cipher,KeyGenerator,SecretKey,Key,SecretKeyFactory
rt.jar:java.security.cert.*包,提供用于解析和管理证书的类和接口,如Certificate以及CertificateFactory
Bouncy Castle:加密组件,安全提供者,javajce的补充(如java6不支持MD4,SSH-224,但bc支持),以及一些工具类,如Base64编码(UrlBase64类)以及十六进制编码(Hex类)。
commons-codex:apache软件,主要用于编码格式转换,如Base64,二进制,十六进制,url编码等,而且对java原生消息摘要算法进行了封装。如Base64类,Hex类;DigestUtils工具类提供了MD5和SHA系列算法实现,对MessageDigest进行了封装。
MD,SHA以及MAC等消息摘要的区别?
SHA算法基于MD4算法基础上,做为MD算法继任者,成为新一代的消息摘要算法。主要不一样之处在于摘要长度,SHA算法的摘要长度更长,安全性更高。
MAC算法又叫作安全信息摘要算法,与SHA以及MD不一样的是,使用MAC作摘要,发送方须要构建密钥并发送密钥给接收方,接收方使用密钥对数据作摘要并与发送方发送的摘要对比;而MD以及SHA不涉及密钥;
数字证书(cer,pfx,der,p7b,p7c,p10,p12,csr)后缀:
当看到cer或pfx结尾的文件,就是数字证书;证书能够做为公钥的载体来传播;证书分为CA证书和自签名证书;CA证书是权威认证,自签名证书是本身颁发给本身(本身既是申请者又是颁发者)。
keyTool证书管理:能够经过jdk的bin目录下KeyTool工具生成数字证书,并导出证书文件;
OpenSSL证书管理:OpenSSL功能远胜于KeyTool,能够用于根证书、服务器证书和客户证书的管理。
转:blog.csdn.net/shenyongjun… PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 经常使用的有: PKCS#7 Cryptographic Message Syntax Standard PKCS#10 Certification Request Standard PKCS#12 Personal Information Exchange Syntax Standard X.509是常见通用的证书格式。全部的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。 PKCS#7 经常使用的后缀是: .P7B .P7C .SPC PKCS#12 经常使用的后缀有: .P12 .PFX X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT .cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。 .pem跟crt/cer的区别是它以Ascii来表示。 pfx/p12用于存放我的证书/私钥,他一般包含保护密码,2进制方式 p10是证书请求 p7r是CA对证书请求的回复,只用于导入 p7b以树状展现证书链(certificate chain),同时也支持单个证书,不含私钥。 —————- 小美注: der,cer文件通常是二进制格式的,只放证书,不含私钥 crt文件多是二进制的,也多是文本格式的,应该以文本格式居多,功能同der/cer pem文件通常是文本格式的,能够放证书或者私钥,或者二者都有 pem若是只含私钥的话,通常用.key扩展名,并且能够有密码保护 pfx,p12文件是二进制格式,同时含私钥和证书,一般有保护密码 怎么判断是文本格式仍是二进制?用记事本打开,若是是规则的数字字母,如 —–BEGIN CERTIFICATE—– MIIE9jCCA96gAwIBAgIQVXD9d9wgivhJM//a3VIcDjANBgkqhkiG9w0BAQUFADBy —–END CERTIFICATE—– 就是文本的,上面的BEGIN CERTIFICATE,说明这是一个证书 若是是—–BEGIN RSA PRIVATE KEY—–,说明这是一个私钥 文本格式的私钥,也可能有密码保护 文本格式怎么变成二进制? 从程序角度来讲,去掉先后的—-行,剩下的去掉回车,用base64解码,就获得二进制了 不过通常都用命令行openssl完成这个工做 ————— 一 用openssl建立CA证书的RSA密钥(PEM格式): openssl genrsa -des3 -out ca.key 1024 二用openssl建立CA证书(PEM格式,假若有效期为一年): openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf openssl是能够生成DER格式的CA证书的,最好用IE将PEM格式的CA证书转换成DER格式的CA证书。 三 x509到pfx pkcs12 -export –in keys/client1.crt -inkey keys/client1.key -out keys/client1.pfx 四 PEM格式的ca.key转换为Microsoft能够识别的pvk格式。 pvk -in ca.key -out ca.pvk -nocrypt -topvk 五 PKCS#12 到 PEM 的转换 openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem 验证 openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem 六 从 PFX 格式文件中提取私钥格式文件 (.key) openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key 七 转换 pem 到到 spc openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc 用 -outform -inform 指定 DER 仍是 PAM 格式。例如: openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER 八 PEM 到 PKCS#12 的转换, openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem