@JunQiu
2018-09-18T21:10:37.000000Z
字数 2782
阅读 1363
summary_2018/08
git
other
// “blob”:一个“blob”通常用来存储文件的内容。一个“blob”对象就是一块二进制数据,它没有指向任何东西或有任何其它属性,甚至没有文件名。因为“blob”对象内容全部都是数据,所以如若两个文件在一个目录树或是一个版本仓库中有同样的数据内容,那么它们将会共享同一个“blob”对象。“blob”对象和其所对应的文件所在路径、文件名是否改被更改都完全没有关系。(存储具体份的某个文件)
// “tree”:像一个目录,管理一些“tree”对象或是“blob”对象。它有一串指向“blob”对象或是其它“tree”对象的指针,一般用来表示内容之间的目录层次关系(即目录、层次文件管理)。
// “commit”:“commit”对象指向一个“tree对象”,并且带有相关的描述信息,标记项目某一个特定时间点的状态。它包括一些关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交的指针等等。
// “tag”:一个“tag”对象包括一个对象名(SHA1签名)、对象类型、标签名、标签创建人的名字(“tagger”),还有一条可能包含有签名(signature)的消息。(即一个对像的一些信息)
### 回退操作
git rest -—hard xxx //版本回退(覆盖暂存区和工作区的修改)
git checkout -- <file> // to discard changes in working directory(已跟踪的文件)
git reset HEAD . //将暂存区的文件放回工作区(会覆盖工作区对应的文件)
// 微信:加密
1:对敏感用户信息“目标明文”用psck#7号填充得到“填充文”
2:AES-128-CBC(填充文,密钥,初始向量iv)=>目标密文
3:Base64_Encode(目标密文)=>encryptedData
4:Base64_Encode(初始向量)=>iv
5:Base64_Encode(密钥)=session_key
// 我们:解密
1:通过wx.getUserInfo()获得密文crypteddata,iv
2:通过wx.login()得到的js_code和http接口得到session_key(详情请看)
3:Base64_Decode(encryptedData)=>目标密文
4:Base64_Decode(session_key)=>即密钥aeskey
5:Base64_Decode(iv)=>初始向量
6:AES-128-CBC(目标密文,密钥,初始向量)=>填充文
7:用psck#7对填充文去除填充得到敏感的用户信息“目标明文”
// psck#7填充??
这是因为对称加密算法采用的AES算法。由于AES是基于数据块的加密方式,也就是说,每次处理的数据是一块(16字节),当数据不是16字节的倍数时填充(而我们的方法就是使用psck#7方法填充),这就是所谓的分组密码(区别于基于比特位的流密码),16字节是分组长度。
// 为什么需要初始向量iv??
这是由于采用AES对称加密时,微信小程采用了对称加密中的CBC方式(是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度(由于第一组没有前一个分组的密文,即和初始向量异或))