JAVA加密算法

1、加密算法简单介绍

SM1算法没有公开
不可逆加密:SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512、SM3(类似于md5) 哈希算法
可逆加密 SM2非对称算法、SM4对称加密算法、DES分组加密算法、3DES三重数据加密算法现已不推荐使用、RSA RSA算法、AES对称加密算法
Base64是编码方式,不算加密
	加密后位数
MD5 32位 salt
SHA-256 64位 salt
SHA-1 40位  salt
HMAC-SHA-256 64位  salt+密匙
可逆加密算法加密后位数不固定,是根据明文长度递增的,一般需扩8倍,最小为32位

2、算法实现

略,网上很多

				# AES加密在linux系统下加密结果不一致
				KeyGenerator secretGenerator = KeyGenerator.getInstance("AES");
                SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
                secureRandom.setSeed(publicKey.getBytes());
                secretGenerator.init(256, secureRandom);
                SecretKey secretKey = secretGenerator.generateKey();
                Cipher cipher = Cipher.getInstance("AES");
                cipher.init(mode, secretKey);
                return cipher.doFinal(rawText);
				
				# 错误写法
				KeyGenerator secretGenerator = KeyGenerator.getInstance("AES");
                secretGenerator.init(256, new SecureRandom(publicKey.getBytes()));
                SecretKey secretKey = secretGenerator.generateKey();
                Cipher cipher = Cipher.getInstance("AES");
                cipher.init(mode, secretKey);
                return cipher.doFinal(rawText);
注意:
大部分算法解密失败抛异常,比如SM4算法,但是AES算法解密失败不报异常,而是返回""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值