Java开发中的加密、解密、签名、验签,密钥,证书(上篇)
OpenSSL和keytool先说一下两个重要的工具
- OpenSSL:OpenSSL整个软件包大概可以分成三个主要的功能部分:SSL协议库libssl、应用程序命令工具以及密码算法库libcrypto 。 它使用标准的文件格式(PEM/CER/CRT/PKCS等)存储密钥和证书信息 。
- keytool:是密钥和证书管理工具 。 它出自于Java体系 , 它使用KeyStore来管理密钥和证书 。
当然OpenSSL还具备其他功能比如作为SSL的客户端和服务器 , 这是keytool所不具备的 。
对称加密采用单钥密码系统的加密方法 , 同一个密钥可以同时用作信息的加密和解密 , 这种加密方法称为对称加密 , 也称为单密钥加密 。 ——百度百科
对称加密算法的特点
- 加密和解密使用同样的密钥
- 计算速度快 , 适用于对大量数据加密处理
- 安全性取决于算法 , 也取决于密钥的管理 , 一旦密钥泄漏 , 数据则暴露无遗
常见的对称加密算法算法 描述 DES(Data Encryption Standard) 数据加密标准 , 速度较快 , 适用于加密大量数据 3DES(Triple DES) 基于DES , 对一块数据用三个不同的密钥进行三次加密 , 强度更高 AES(Advanced Encryption Standard) 高级加密标准 , 速度快 , 安全级别高 , 支持128、192、256、512位密钥的加密 Blowfish 速度快且安全 , 而且没有专利和商业限制 。 了解更多>>
OpenSSL实现对称加密
OpenSSL> enc --helpusage: enc -ciphername [-AadePp] [-base64] [-bufsize number] [-debug][-in file] [-iv IV] [-K key] [-k password][-kfile file] [-md digest] [-none] [-nopad] [-nosalt][-out file] [-pass arg] [-S salt] [-salt] -AProcess base64 data on one line (requires -a) -aPerform base64 encoding/decoding (alias -base64) -bufsize sizeSpecify the buffer size to use for I/O -dDecrypt the input data -debugPrint debugging information -eEncrypt the input data (default) -in fileInput file to read from (default stdin) -iv IVIV to use, specified as a hexadecimal string -K keyKey to use, specified as a hexadecimal string -md digestDigest to use to create a key from the passphrase -noneUse NULL cipher (no encryption or decryption) -nopadDisable standard block padding -out fileOutput file to write to (default stdout) -PPrint out the salt, key and IV used, then exit(no encryption or decryption is performed) -pPrint out the salt, key and IV used -pass sourcePassword source -S saltSalt to use, specified as a hexadecimal string -saltUse a salt in the key derivation routines (default) -vVerbose
命令选项 描述 -in file 被加密文件的全路径 -out file 加密后内容输出的文件路径 -salt 自动插入一个随机数作为文件内容加密 , 默认选项 -e 加密模式 , 默认 -d 解密模式 , 需要与加密算法一致 -a 使用-base64位编码格式 , 也可使用-base64 -pass source 指定密码的输入方式 , 共有五种方式:命令行输入(stdin)、文件输入(file)、环境变量输入(var)、文件描述符输入(fd)、标准输入(stdin) 。 默认是标准输入即从键盘输入
- 联想正开发下一代ThinkReality智能眼镜
- Apple Glass正进入第二开发阶段 目标成品重量轻 续航长
- 运动计数开发项目的对抗赛:飞算全自动软件工程平台碾压传统模式
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 想自学Python来开发爬虫,需要按照哪几个阶段制定学习计划
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 人脸识别设备主板如何选型 软硬整合大幅缩短开发时间
- 学习大数据是否需要学习JavaEE
- 田伟院士:我眼中的医疗机器人
- Mozilla将默认禁用Firefox中的退格键以防止用户编辑数据丢失