《Java加密与解密的艺术》读后总结

JAVA加密与解密:

消息摘要算法:MD,SHA,MAC
对称加密算法:DES,3DES,AES
非对称加密算法:RSA
签名算法:RSA,DSA

消息摘要与签名的区别:消息摘要保证数据完整性,没有被篡改;签名确保消息是由发送方发送;签名算法 中也会涉及的摘要;签名算法实际上就是消息摘要与非对称加密算法的合体;

签名与加密:公钥加密,私钥解密(一般业务场景下如此);私钥签名,公钥验签

DES:
密钥长度56-64位
使用方式:

  • 1)发送方构建密钥,并公布密钥

  • 2)发送方使用密钥对数据加密,并发送加密数据

  • 3)接收方使用密钥对接收数据解密


3DES:
解决DES密钥太短的问题,密钥长度112-168位,增加了迭代次数,速度较慢,效率不高
使用方式同DES

AES:
解决3DES加密效率低,速度慢的问题,成为DES算法的替代者
使用方式同DES

RAS:
非对称加密算法

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进行了封装。


Bouncy castle与common codec的Base64区别?
bc仅实现了一般base64算法;common-codec通过传入参数方式可以选择使用一般base64还是遵循RFC2045的Base64;差别是后者编码后会在行末尾加上\r\n换行。

UrlBase64与Base64区别?
因为以get方式传输二进制数据时或者以get方式传递本该由post方式传递的私密数据时,使用base64对其编码成字符串再传输比较好。但是由于url中对一些字符有限制,比如“+”,“/”等,而传统base64编码后会出现这些字符,因此出现了UrlBase64编码。同样Bouncy Castle和common codec都实现了它。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值