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-255
d+= 256 ;
}
if( d < 16 ){ // 0-15 16
s.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是会自动补位补零的!