加密和解密

1、种类

  • hash算法
  • 对称式加密技术
  • 非对称式加密技术

算法签名可以用hash算法,
内部通信可以用对称加密,
友商互联网之间用非对称加密

2、散列算法、hash算法

名称安全性速度
md5安全低
SHA1安全性高

2.1、 md5

  • MD5 用的是 哈希函数,它的典型应用是对一段信息产生 信息摘要,以 防止被篡改
  • MD5 都会输出长度为 128bits 的一个串
  • 四个和MD4设计有少许不同的步骤组成,(md2,md4被md5取代,md6失败了)
  • 可能有的算法首位的0会丢(彼此不一样的代码,然后eq不相等的坑)
  /**
     * jdk的线程不安全,MessageDigest
     * commons-codec ,DigestUtils.md5Hex ,安全(老了),
     * spring ,DigestUtils 的只有md5,
     * Guava部分功能上其实是ApacheCommon的一个子集,蛮新的
     */
    public static final byte[] getMD53(String str) {
        Hasher hasher = Hashing.md5().newHasher();
    
        hasher.putString(str, Charset.forName("UTF-8"));
        byte[] md5 = hasher.hash().asBytes();
        return md5;
    }

2.2、 SHA1算法

  • SHA1 比 MD5 的 安全性更强
  • 对于长度小于 2 ^ 64 位的消息,SHA1 会产生一个 160 位的 消息摘要。
  • 基于 MD5、SHA1 的信息摘要特性以及 不可逆 (一般而言),可以被应用在检查 文件完整性 以及 数字签名 等场景。
    SHA-1、SHA-2、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256
 /**
     * md2
     * md5
     * SHA-1
     * sha256
     * SHA3-224
     * SHA3-256
     * SHA3-384
     * SHA3-512
     * SHA-384
     * SHA-512/224
     * SHA-512/256
		还是commons-codec最香
     */
    public static String ccSHA1(String src) {
        if(StringUtils.isEmpty(src)){
            return null;
        }else{
            System.out.println("cc sha1 - 1 :" + DigestUtils.sha1Hex(src.getBytes()));
            System.out.println("cc sha1 - 2 :" + DigestUtils.sha1Hex(src));
            return DigestUtils.sha1Hex(src.getBytes());
        }
    }

2.3、HMAC算法

  • HMAC 发送方 和 接收方 都有的 key 进行计算,而没有这把 key 的第三方,则是 无法计算 出正确的 散列值的,这样就可以 防止数据被篡改。
  • HMAC 算法实例在 多线程环境 下是 不安全的。
  • 但是需要在 多线程访问 时,进行同步的辅助类,使用 ThreadLocal 为 每个线程缓存 一个实例可以避免进行锁操作。
  • MAC算法可选以下多种算法:HmacMD5/HmacSHA1/HmacSHA256/HmacSHA384/HmacSHA512

2.4、 国密sm3

2.5、base64

这个不算加密算法,jdk8自带的最快,吧老的换了吧,速度大幅度提升

3、对称加密

名称位数安全速度
DES56较低
3DES112位或168位
AES128、192、256位

AES、DES、3DES 都是 对称 的 块加密算法,加解密 的过程是 可逆的
AES128、AES192、AES256 (默认安装的 JDK 尚不支持 AES256,需要安装对应的 jce 补丁进行升级 jce1.7,jce1.8)。

3.1、DES

  • DES 加密算法是一种 分组密码,以 64 位为 分组对数据 加密,它的 密钥长度 是 56 位,加密解密 用 同一算法。

3.2、3DES

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

3.3、AES

  • AES 本身就是为了取代 DES 的,AES 具有更好的 安全性、效率 和 灵活性
  • AES 加密算法是密码学中的 高级加密标准,该加密算法采用 对称分组密码体制,密钥长度的最少支持为 128 位、 192 位、256 位,分组长度 128 位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的 区块加密标准。
  • 这个最好双方采用同样的代码,密码啥的,不同的模式可能代码不一样
模式
  • ECB模式(默认)电码本模式 Electronic Codebook Book
  • CBC模式 密码分组链接模式 Cipher Block Chaining(两端需要同时约定初始向量iv
  • CFB模式: 密码反馈模式 Cipher FeedBack)(可以传入非16字节倍数的数据,适合流数据,也需要选择iv)
  • CTR模式: 计算器模式 Counter(iv+1的获取比较负责,需要获取瞬时iv
填充
  • 填充模式NoPadding、PKCS5Padding(默认)
    *

4、非对称加密

名称位数安全速度
RSA
ECC

4.1、 RSA算法

RSA 加密算法是目前最有影响力的 公钥加密算法,并且被普遍认为是目前 最优秀的公钥方案 之一
第一个能同时用于 加密 和 数字签名 的算法

4.2、ECC

5、其他

5.1、PKCS7

PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关标准

5.2、X509

X509协议,是PKI技术体系中应用最为广泛、也是最为基础的一个国际标准。它的主要目的在于定义一个规范的数字证书的格式。
X509和PKCS都遵循ASN.1的语法。
X509,公钥证书,只包含公钥信息和一些基础信息。
P7,签名或加密。可以往里面塞x509,同时没有签名或加密内容。
P12,含有私钥,同时可以有公钥,有口令保护。

6、国密

名称种类对标说明
sm1为对称加密AES相当SM1 。算法不公开,通过加密芯片的接口
sm2非对称加密安全强度比RSA 2048位高,运算速度快于RSA基于ECC
sm3消息摘要MD5
SM4对称算法(分组数据算法)DES
sm7对称密码非接触式IC卡,门禁卡
SM9标识密码算法标识密码将用户的标识(如邮件地址、手机号码、QQ号码等)作为公钥,省略了交换数字证书和公钥过程
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值