public int doFinal(byte[] input,int inputOffset,int inputLen,byte[] output,int outputOffset);
在多步加密或解密数据时,首先需要一次或多次调用update方法,用以提供加密或解密的所有数据:
public byte[] update(byte[] input);
public byte[] update(byte[] input,int inputOffset,int inputLen);
public int update(byte[] input,int inputOffset,int inputLen,byte[] output);
public int update(byte[] input,int inputOffset,int inputLen,byte[] output,int outputOffset);
如果还有输入数据 , 多步操作可以使用前面提到的doFinal方法之一结束 。如果没有数据,多步操作可以使用下面的doFinal方法之一结束:
public byte[] doFinal();
public int doFinal(byte[] output,int outputOffset);
如果在transformation参数部分指定了padding或unpadding方式,则所有的doFinal方法都要注意所用的padding或unpadding方式 。
调用doFinal方法将会重置Cipher对象到使用init进行初始化时的状态,就是说,Cipher对象被重置,使得可以进行更多数据的加密或解密 , 至于这两种模式,可以在调用init时进行指定 。
三,包裹wrap密钥必须先使用WRAP_MODE初始化Cipher对象,然后调用以下方法:
public final byte[] wrap(Key key);
如果将调用wrap方法的结果(wrap后的密钥字节)提供给解包裹unwrap的人使用,必须给接收者发送以下额外信息:
(1)密钥算法名称:
密钥算法名称可以调用Key接口提供的getAlgorithm方法得到:
public String getAlgorithm();
(2)被包裹密钥的类型(Cipher.SECRET_KEY,Cipher.PRIVATE_KEY,Cipher.PUBLIC_KEY)
sourcelink: ;nid=41716order=tid=
为了对调用wrap方法返回的字节进行解包,必须先使用UNWRAP_MODE模式初始化Cipher对象,然后调用以下方法 :
public final Key unwrap(byte[] wrappedKey,String wrappedKeyAlgorithm,int wrappedKeyType));
其 中,参数wrappedKey是调用wrap方法返回的字节,参数wrappedKeyAlgorithm是用来包裹密钥的算法,参数 wrappedKeyType是被包裹密钥的类型 , 该类型必须是Cipher.SECRET_KEY,Cipher.PRIVATE_KEY, Cipher.PUBLIC_KEY三者之一 。
四,SunJCE提供者实现的cipher算法使用如下参数:
(1)采用CBC、CFB、OFB、PCBC模式的DES、DES-EDE和Blowfish算法 。,它们使用初始化向量IV作为参数 。可以使用javax.crypto.spec.IvParameterSpec类并使用给定的IV参数来初始化Cipher对象 。
(2)PBEWithMD5AndDES使用的参数是一个由盐值和迭代次数组成的参数集合 。可以使用javax.crypto.spec.PBEParameterSpec类并利用给定盐值和迭代次数来初始化Cipher对象 。
注意:如果使用SealedObject类,就不必为解密运算参数的传递和保存担心 。这个类在加密对象内容中附带了密封和加密的参数,可以使用相同的参数对其进行解封和解密 。
Cipher 中的某些update和doFinal方法允许调用者指定加密或解密数据的输出缓存 。此时 , 保证指定的缓存足够大以容纳加密或解密运算的结果是非常重要 的
如何给MD5加上salt随机盐值MD5自身是不可逆的 但是目前网路上有很多数据库支持反查询
如果用户密码数据库不小心被泄露黑客就可以通过反查询方式获得用户密码或者对于数据库中出现频率较高的hash码(即很多人使用的)进行暴力破解(因为它通常都是弱口令)
盐值就是在密码hash过程中添加的额外的随机值
比如我的id是癫ω倒④ゞ 密码是 存在数据库中的时候就可以对字符串/癫ω倒④ゞ 进行hash , 而验证密码的时候也以字符串(要验证的密码)/癫ω倒④ゞ 进行验证
这样有另外一个笨蛋密码是的时候 依然能构造出不同的hash值 并且能成功的验证
这时候我的id就作为盐值 为密码进行复杂hash了
推荐阅读
- chatgpt里面的美金在哪看,如何查美金到账
- 关于将txt文件导入mysql的信息
- ChatGPT邀请你去五日游,邀请你去旅游
- 亚马逊服务器云,亚马逊云服务器chia
- python里取整函数 python取整函数怎么取整
- 微信小店如何添加视频号,微信小店如何添加视频号链接
- 仿游戏人物动作的游戏,仿游戏人物动作的游戏名字
- 经营养成类游戏排行榜,好玩的经营养成类游戏
- w10怎么安装mysql w10怎么安装字体库