1、关于AES(以AES128为例)加密的CBC模式:
秘钥长度:
128位(16字节)
偏移量:
在CBC分组模式下每个明文块要先与前一个密文块进行异或后再加密,每个密文块都依赖于前面的所有明文块。
那么第一个明文快就要用到偏移量IV了。在CBC中,IV先与第一个明文块进行异或,得到第一个明文块。
填充模式:PKCS5/PKCS7
- PKCS5Padding限制了填充的Block Size为8字节(Bytes),填充块最多只能填充8个字节(Bytes),限定了范围,填充内容0x01-0x08;
- 当际上当分组块大于8字节时,如AES128是16字节时,理论上数据块分组需要补位的字节数:1-16个字节(Bytes),在AES加密当中严格来说是不能使用PKCS5的,因为AES的块大小是16字节(Bytes)而PKCS5只能用于8字节(Bytes),补不齐;
- 但是,通常我们在AES加密中所说的PKCS5指的就是PKCS7,在iOS中提供了PKCS7Padding,而Java中则提供了PKCS5Padding,而Java实际上当分组块大于8字节(Bytes)时,其PKCS5Padding与PKCS7Padding是相等的:每需要填充n个字节,每个字节填充的值是n (n的范围实际上就是PKCS7Padding的1-255字节数的范围)。
2、关于导航栏透明备忘录:
iOS7之后由于navigationBar.translucent默认是YES,坐标默认在(0,0)点 ,当不透明的时候(设为NO),零点坐标在(0,64); ps:64或88
1、如果你想设成透明的,而且还要零点从(0,64)开始,那就添加:
self.edgesForExtendedLayout = UIRectEdgeNone;
2、如果你想设成不透明的,而且还要坐标从(0,0)开始,添加
self.extendedLayoutIncludesOpaqueBars = YES;
2、关于响应链的备忘录:
1、如果第一响应者是自定义的UIControl的子类同时响应链上也绑定了手势识别器UIGestureRecognizer:
UIWindow会将事件先发送给响应链上绑定的手势识别器UIGestureRecognizer,再发送给第一响应者,如果手势识别器能成功识别事件,UIApplication默认会向第一响应者发送cancel响应事件的命令;如果手势识别器未能识别手势,而此时触摸并未结束,则停止向手势识别器发送事件,仅向第一响应者发送事件。如果手势识别器未能识别手势,且此时触摸已经结束,则向第一响应者发送end状态的touch事件,以停止对事件的响应。
2、如果第一响应者是UIControl的子类且是系统类(UIButton、UISwitch)同时响应链上也绑定了手势识别器UIGestureRecognizer:
UIWindow会将事件先发送给响应链上绑定的手势识别器UIGestureRecognizer,再发送给第一响应者,如果第一响应者能响应事件,UIControl调用调用sendAction:to:forEvent:将target、action以及event对象发送给UIApplication,UIApplication对象再通过 sendAction:to:from:forEvent:向target发送action。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
BOOL shouldInterceptTouches = YES;
CGPoint location = [self.view convertPoint:point fromView:self.targview];
CGRect rect = [self.view convertRect:self.targview.frame toView: self.view];
shouldInterceptTouches = CGRectContainsPoint(rect, location);
if (shouldInterceptTouches) {
return self.targview;
}else {
return self.view //// [super hitTest:point withEvent:event];
}
}
总结:UIControl的子类且是系统类UIButton,可以收到UIGestureRecognizer的透传响应,
自定义的UIControl会被手势响应拦截。
网友评论