OC sha1+base64加密 以及 十进制转十六进制
来源:互联网 发布:淘宝提前收款不能用了 编辑:程序博客网 时间:2024/06/05 20:15
java程序平移IOS中遇到加密问题。
java代码:
public static String getDigest( String algorithm, String data ) {StringBuffer s = new StringBuffer();try{MessageDigest md = MessageDigest.getInstance( algorithm );byte[] dat = data.getBytes();md.update( dat );byte[] digest = md.digest();for( int i=0 ; i < digest.length ; i++ ){int d = digest[ i ];if( d < 0 ){// byte 128-255d+= 256 ;}if( d < 16 ){// 0-15 16s.append( "0" );}s.append( Integer.toString( d, 16 ) );}}catch( Exception e ){}return s.toString();}
java中的digest是有符号10进制的整数。需要注意的是,转成16进制是需要补位的,否则 遇到0A~0F会丢掉“0”。
OC中可以使用int8_t类型(有符号)或者uint8_t(无符号)代替。uint8_t是会自动补位补零的!
OC中 10进制转16进制的方法:
[NSString stringWithFormat:@"%x" , 数字]; //%d 为10进制输出 %x 为16进制输出
OC代码:
+ (NSString *) sha1_base64:(NSString *) str { const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data = [NSData dataWithBytes:cstr length:str.length]; uint8_t digest[CC_SHA1_DIGEST_LENGTH];// int8_t digest[CC_SHA1_DIGEST_LENGTH]; //使用int8_t时,循环中需要做补零处理。 CC_SHA1(data.bytes, data.length, digest); NSMutableString *output = [[NSMutableString alloc]init]; for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) { int d = digest[i]; //补零处理// if (d < 0) {// d += 256;// }// if (d < 16) {// [outStr appendString:@"0"];// } NSString *tmpStr = [NSString stringWithFormat:@"%x" ,d]; //%d 为10进制输出 %x 为16进制输出 [output appendString:tmpStr]; } return output;}
留下备用:
o:以无符号八进制整数形式输出整数(不输出前导符O)。
x:以无符号十六进制整数形式输出整数(不输出前导符Ox)。
u:以无符号十进制整数形式输出整数。
c:以字符形式输出,输出一个字符。
s:以字符串形式输出,输出字符串的字符至结尾符’\O’为止。
f:以小数形式输出实数,隐含输出1位整数,6位小数。
e:以标准指数形式输出实数,数字部分隐含1位整数,6位小数。
g:根据给定的值和精度,自动选择f与e中较紧凑的一种格式,不输出无意义的O。
一般数据默认的输出宽度等于数据的实际位数。例如:
int a一3,b一12;float x一1.23,y一4.785;
①printf(“a=%d,b=%d”,a,b);
输出结果:a=3,b===12
②printf("%f*%f一%f",x,y,x*y);
输出结果:1.230000*4.785000—5.885550
对输出格式,C语言同样提供附加格式字符,用以对输出格式作进一步描述。
l:用于长整型数据输出(%ld,%lo,%lx,%lu),以及双精度型数据输出(%lf,%le,%lg)。
m:域宽,十进制整数,用以描述输出数据所占宽度。如果m大于数据实际位数,输出时前面补足空格;如果m小于数据的实际位数,按实际位数输出。
n:附加域宽,十进制整数,用于指定实型数据小数部分的输出位数。如果n大于小数部分的实际位数,输出时小数部分用O补足;如果n小于小数部分的实际位数,输出时将小数部分多余的位4舍5入。如果用于字串数据,表示从字串中截取的字符数。
- OC sha1+base64加密 以及 十进制转十六进制
- javascript 十进制加密 十六进制加密
- c++ 加密MD5/SHA1/BASE64
- ruby md5,sha1,base64 加密
- MD5 base64 sha1 加密,解密
- sha1加密和base64编码
- md5加密,Base64加密解密,SHA1生成
- Bailian4003 十六进制转十进制【十六进制】
- cocos2d-x加密MD5/SHA1/BASE64
- python 三个常用加密 base64,md5,sha1
- commons-codec 加密(MD5 SHA1 BASE64)
- cocos2d-x加密MD5/SHA1/BASE64
- SHA1 MD5 BASE64 AES 加密解密
- SHA1 MD5 BASE64 AES 加密解密
- Ruby 加密(md5,sha1,base64)
- oc将十进制转化为十六进制
- web安全,js base64加密, MD5加密,sha1加密
- 十六进制转十进制
- 编写MR运行在Hbase上面注意事项
- 通过yum 安装 chrome 和flash 插件
- Log工具-Log4c 使用
- 以无线方式安装应用程序
- Linux安装程序详解
- OC sha1+base64加密 以及 十进制转十六进制
- Java FTP(Apache)文件上传、下载
- hdu1229
- ID_APP_EXIT
- Silverlight自动根据屏幕分辨率进行布局
- Spring AOP (下)
- Asp.Net MVC4入门指南(9):查询详细信息和删除记录
- 树莓派自动运行程序
- 利用cglib给javabean动态添加属性