之前在博文中实现的SHA1的安全性已经满足不了用户需求,今天把SHA224/SHA256/SHA384/SHA512的实现一并附上。
SHA即Secure Hash Algorithm(安全散列算法)有多种不同位数的实现,常见的有SHA224/SHA256/SHA384/SHA512等
SHA224:
- (NSString*) sha224
{
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:self.length];
uint8_t digest[CC_SHA224_DIGEST_LENGTH];
CC_SHA224(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA224_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA224_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
} |
- (NSString*) sha224
{
const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
NSData *data = [NSData dataWithBytes:cstr length:self.length];
uint8_t digest[CC_SHA224_DIGEST_LENGTH];
CC_SHA224(data.bytes, data.length, digest);
NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA224_DIGEST_LENGTH * 2];
for(int i = 0; i < CC_SHA224_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];
return output;
}
Read more…
Android在使用脚本编译和测试时,使用默认的testrunner不会输出文件类型的单元测试报告,每次只能分析logcat的无法直观的看到单元测试结果和报告,这给编写自动化脚本带来了不少麻烦,虽然可以自己动手编写支持junit测试报告输出的TestRunner,但是比较麻烦。除此之外,有一个android-junit-report.jar的开源包可以拿来使用,使用方法也很简单,输出的单元测试报告也可以为多种报告分析工具分析。具体使用方法如下:
这里假设Android APP的包名为com.xxx.xxx
方法1:使用Eclipse IDE方式
1.下载android-junit-report.jar并将其导入到Android测试项目的libs中
2.打开Android测试项目的AndroidManifest.xml文件,找到
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.xxx.xxx"></instrumentation> |
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.xxx.xxx"></instrumentation>
修改为
<instrumentation
android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
android:targetPackage="com.xxx.xxx"></instrumentation> |
<instrumentation
android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
android:targetPackage="com.xxx.xxx"></instrumentation>
3.运行Junit测试
4.使用ADB方式获取单元测试报告
adb pull /data/data/com.xxx.xxx/files/junit-report.xml |
adb pull /data/data/com.xxx.xxx/files/junit-report.xml
Read more…
Android SDK Tools在升级到Version22之后,原来的ant自动编译脚本运行出现错误,导致为Jenkins配置的批处理脚本无法执行,一直发送错误邮件,经过调查后发现,Android SDK Tools升级后文件和目录结构发生了变化,主要包括以下
1.Android SDK Tools 22之后的版本中tools目录中将不包含
- tools\zipalign.exe
- tools\sqlite3.exe
以上两个文件,但是文件对应移动到了各自的platform-tool和build-tools下面,对应路径如下
- build-tools\android-xx\zipalign.exe
- platform-tools\sqlite3.exe
如果需要使用时,需要手动复制到tools下,或者放到PATH变量中去。
Read more…
iOS7.1之后使用OTA方式部署时,强制使用SSL加密方式传送ipa文件和plist文件,但是服务器使用https的话需要支付一定的费用购买SSL证书,国内使用OTA方式发布ipa文件的开发者大部分使用的时http方式,http方式在iOS7.1就失效了。如果对发布的环境要求不高,使用Dropbox作为存储空间方式发布是不错的选择,并且Dropbox是支持https的,而且是浏览器地址栏显示为绿色,最安全的EVSSL。
Read more…
使用HTML5+Native方式开发APP时,需要禁用掉UIWebView前进和后退功能,可以使用以下三种方式实现,三种方法同时使用亦可。
1.APP内使用native代码修改UIWebView功能禁止。
直接覆盖UIWebView返回判断功能,前进亦可在此处禁止
@interface UIWebView(no_back_forward)
- (BOOL) canGoBack;
- (BOOL) canGoForward;
@end
@implementation UIWebView(no_back_forward)
- (BOOL) canGoBack
{
return NO;
}
- (BOOL) canGoForward
{
return NO;
}
@end |
@interface UIWebView(no_back_forward)
- (BOOL) canGoBack;
- (BOOL) canGoForward;
@end
@implementation UIWebView(no_back_forward)
- (BOOL) canGoBack
{
return NO;
}
- (BOOL) canGoForward
{
return NO;
}
@end
Read more…
iOS升级到7.1之后,之前一直使用正常的OTA部署的网站在安装APP时报出了以下错误
Cannot install applications because the certificate for www.example.com is not valid
而在7.0和之前的版本上没有这类问题,经过调查得知iOS7.1以后强制使用https安全连接方式才能正常部署,OTA部署用plist文件和ipa文件的URI必须以https方式开头,而7.1之前使用http即可,影响范围包括企业内部署使用的Ad-HOC和InHouse方式。
Read more…
iOS7.0以后的UILabel会自动将Text行尾的空白字符全部去除,除了常见的半角空格(\0x20)和制表符(\t)之外,全角空格(\u3000)也被计算在内,甚至连多余的换行符(\r,\n)也被自动去除了。这一点虽然方便直接将控件赋值和无需取值后再trim,但是太过智能化了之后,往往不能满足一些本可以简单实现的需求。
Read more…
Recent Comments