精华内容
下载资源
问答
  • ios MD5加密32位(区分大小写

    千次阅读 2017-06-01 18:15:15
    #import "NSString+change.h" #import <CommonCrypto/CommonDigest.h> @implementation NSString (change) ...- (NSString*)md532BitLower { const char *cStr = [self UTF8String]; unsigned
    #import "NSString+change.h"  
    #import <CommonCrypto/CommonDigest.h>  
    @implementation NSString (change)  
    //小写
    - (NSString*)md532BitLower  
    {  
        const char *cStr = [self UTF8String];  
        unsigned char result[16];  
    
        NSNumber *num = [NSNumber numberWithUnsignedLong:strlen(cStr)];  
        CC_MD5( cStr,[num intValue], result );  
    
        return [[NSString stringWithFormat:  
                 @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",  
                 result[0], result[1], result[2], result[3],  
                 result[4], result[5], result[6], result[7],  
                 result[8], result[9], result[10], result[11],  
                 result[12], result[13], result[14], result[15]  
                 ] lowercaseString];  
    }  
    //大写
    - (NSString*)md532BitUpper  
    {  
        const char *cStr = [self UTF8String];  
        unsigned char result[16];  
    
        NSNumber *num = [NSNumber numberWithUnsignedLong:strlen(cStr)];  
        CC_MD5( cStr,[num intValue], result );  
    
        return [[NSString stringWithFormat:  
                 @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",  
                 result[0], result[1], result[2], result[3],  
                 result[4], result[5], result[6], result[7],  
                 result[8], result[9], result[10], result[11],  
                 result[12], result[13], result[14], result[15]  
                 ] uppercaseString];  
    }  
    @end  
    
    展开全文
  • MD5加密大小写问题

    万次阅读 2018-07-17 10:06:13
    1、MD5加密源代码: public static void main(String[] args) { String aa = "aa"; String bb = "Aa"; System.out.println("MD5.MD5(aa) = " +MD5.MD5(aa)); System.out.println...

    1、MD5加密

    源代码:

     public static void main(String[] args) {

            String aa = "aa";

            String bb = "Aa";

            System.out.println("MD5.MD5(aa) = " +MD5.MD5(aa));

            System.out.println("MD5.MD5(bb) = " +MD5.MD5(bb));

        }

     

    运行结果:

    MD5.MD5(aa) = 4124bc0a9335c27f086f24ba207a4912

    MD5.MD5(bb) = 98568d540134639be4655198a36614a4

    可以看出:要加密的字符串大小写不一样MD5加密的密文是不一样的。

     

    2、MD5解密(利用MD5在线破解工具可以看到)

     

     密文:98568d540134639be4655198a36614A4 

     类型:md5

    ------------------------------------------------------------------------------------

    查询结果:

    Aa

           

     

     密文:98568d540134639BE4655198a36614a4 

     类型:md5

     -----------------------------------------------------------------------------------------

    查询结果:

    Aa

            

    我们可以看出: 密文中字母大小写不会影响破解结果

     

    总得来说:使用MD5加密时,要加密的字符串中字母需要区分大小写,但是验证密文中的内容时不需要区分大小写的。


    展开全文
  • 业务需求:把接口传递的参数先排序并MD5加密 生成一个验签字符串 系统会为每个接入的应用系统提供一个唯一的key, 应用系统需要使用这个key和有效的access_token用于生成加密的验签, 接口参数加密方式详细定义如下: ...

    业务需求:把接口传递的参数先排序并MD5加密 生成一个验签字符串

    系统会为每个接入的应用系统提供一个唯一的key, 应用系统需要使用这个key和有效的access_token用于生成加密的验签, 接口参数加密方式详细定义如下:
        第一步: 设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA(access_token作为其中的一个参数参与验签计算)。 
    特别注意以下重要规则: 
    参数名ASCII码从小到大排序(字典序); 
    如果参数的值为空不参与签名; 
    版本号参数不参与验签;
    参数名区分大小写; 
    传送的sign参数不参与签名,将生成的签名与该sign值作校验。 
    接口可能增加字段,验证签名时必须支持增加的扩展字段 
        第二步: 在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。

    例如 signValue="flag=1&isWaitDeal=2&pageNo=1&pageSize=10"

    以下为整理好的工具类:

    导包:

    #define CC_MD5_DIGEST_LENGTH 16
    #import <CommonCrypto/CommonCrypto.h>

    1.排序工具类

    20191023修改: 格式化value  去除无value的key

      /** wuxifan
         对字典(Key-Value)排序 区分大小写
         @param dict 要排序的字典
         */
        - (NSString *)sortedDictionary:(NSDictionary *)dict{
            
            //将所有的key放进数组
            NSArray *allKeyArray = [dict allKeys];
            
            //序列化器对数组进行排序的block 返回值为排序后的数组
            NSArray *afterSortKeyArray = [allKeyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id
                                                                                                     _Nonnull obj2) {
                /**
                 In the compare: methods, the range argument specifies the
                 subrange, rather than the whole, of the receiver to use in the
                 comparison. The range is not applied to the search string.  For
                 example, [@"AB" compare:@"ABC" options:0 range:NSMakeRange(0,1)]
                 compares "A" to "ABC", not "A" to "A", and will return
                 NSOrderedAscending. It is an error to specify a range that is
                 outside of the receiver's bounds, and an exception may be raised.
                 
                 - (NSComparisonResult)compare:(NSString *)string;
                 
                 compare方法的比较原理为,依次比较当前字符串的第一个字母:
                 如果不同,按照输出排序结果
                 如果相同,依次比较当前字符串的下一个字母(这里是第二个)
                 以此类推
                 
                 排序结果
                 NSComparisonResult resuest = [obj1 compare:obj2];为从小到大,即升序;
                 NSComparisonResult resuest = [obj2 compare:obj1];为从大到小,即降序;
                 
                 注意:compare方法是区分大小写的,即按照ASCII排序
                 */
                //排序操作
                NSComparisonResult resuest = [obj1 compare:obj2];
                return resuest;
            }];
            //排序好的字典
            NSLog(@"afterSortKeyArray:%@",afterSortKeyArray);
            NSString *tempStr = @"";
            //通过排列的key值获取value
            NSMutableArray *valueArray = [NSMutableArray array];
            for (NSString *sortsing in afterSortKeyArray) {
                //格式化一下 防止有些value不是string
                NSString *valueString = [NSString stringWithFormat:@"%@",[dict objectForKey:sortsing]];
                if(valueString.length>0){
                    [valueArray addObject:valueString];
                    tempStr=[NSString stringWithFormat:@"%@%@=%@&",tempStr,sortsing,valueString];
                }
            }
            //去除最后一个&符号
            if(tempStr.length>0){
                tempStr=[tempStr substringToIndex:([tempStr length]-1)];
            }
            //排序好的对应值
            //  NSLog(@"valueArray:%@",valueArray);
            //最终参数
            NSLog(@"tempStr:%@",tempStr);
            //md5加密
            // NSLog(@"tempStr:%@",[self getmd5WithString:tempStr]);
            return tempStr;
        }

    2.MD5加密工具类

    //字符串MD5加密
    - (NSString*)getmd5WithString:(NSString *)string
    {
        const char* original_str=[string UTF8String];
        unsigned char digist[CC_MD5_DIGEST_LENGTH]; //CC_MD5_DIGEST_LENGTH = 16
        CC_MD5(original_str, (uint)strlen(original_str), digist);
        NSMutableString* outPutStr = [NSMutableString stringWithCapacity:10];
        for(int  i =0; i<CC_MD5_DIGEST_LENGTH;i++){
            [outPutStr appendFormat:@"%02X", digist[i]];//小写x表示输出的是小写MD5,大写X表示输出的是大写MD5
        }
       // return [outPutStr lowercaseString];
        return outPutStr;
    }

    3.测试调用

     

       //生成一个s参数进行验签
                NSString *sStr=[self sortedDictionary:request.parameters];
                //MD5加密
                NSString *sMD5Str=[self getmd5WithString:sStr];
                //放到接口参数里
                [parameters setObject:sMD5Str forKey:@"s"];

    4.截图

    s为新生成的验签参数(截图未调用MD5)

    展开全文
  • iOS md5 32位加密区分大小写

    千次阅读 2015-06-25 10:07:47
    #import "NSString+change.h" #import  @implementation NSString ...- (NSString*)md532BitLower {  const char *cStr = [self UTF8String];  unsigned char result[16];    NSNumber *num = [NS
    #import "NSString+change.h"
    #import <CommonCrypto/CommonDigest.h>
    @implementation NSString (change)
    - (NSString*)md532BitLower
    {
        const char *cStr = [self UTF8String];
        unsigned char result[16];
        
        NSNumber *num = [NSNumber numberWithUnsignedLong:strlen(cStr)];
        CC_MD5( cStr,[num intValue], result );
        
        return [[NSString stringWithFormat:
                 @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
                 result[0], result[1], result[2], result[3],
                 result[4], result[5], result[6], result[7],
                 result[8], result[9], result[10], result[11],
                 result[12], result[13], result[14], result[15]
                 ] lowercaseString];
    }
    - (NSString*)md532BitUpper
    {
        const char *cStr = [self UTF8String];
        unsigned char result[16];
        
        NSNumber *num = [NSNumber numberWithUnsignedLong:strlen(cStr)];
        CC_MD5( cStr,[num intValue], result );
        
        return [[NSString stringWithFormat:
                 @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
                 result[0], result[1], result[2], result[3],
                 result[4], result[5], result[6], result[7],
                 result[8], result[9], result[10], result[11],
                 result[12], result[13], result[14], result[15]
                 ] uppercaseString];
    }
    @end


    本文出自 “iOS悠悠Bug记” 博客,请务必保留此出处http://ios2013yoyo.blog.51cto.com/6260005/1663474

    展开全文
  • MD5加密字符串 32位 大小写输出 16位 大小写输出
  • MD5加密/解密大小写问题

    千次阅读 2019-08-08 10:47:01
    先看一段加密MD5的代码: REPORT ZTEST_MD5. DATA : XMS_STRING TYPE STRING, HASH TYPE HASH160. XMS_STRING = 'Bd123456'. WRITE : / 'Pass:',XMS_STRING. CALL FUNCTION 'CALCULATE_HASH_FOR_CHAR' EXPORT...
  • hex_md5("123456");//"e10adc3949ba59abbe56e057f20f883e" 在大小写上可以使用 1、转换成大写:toUpperCase() 2、转换成小写:toLowerCase()
  • MD5加密

    2018-09-25 15:47:03
    JAVA和php加密后: java 字母大写 ...所以在跨语言传递是需要加绒大小写。 大写和小写都要兼容。 if(md5() == secret) { return true;...} else if( upper(md5()) == secret) { ...md5区分大小写。 ...
  • Android常见加密算法(MD5加密

    千次阅读 2016-11-15 12:24:56
    一定注意,MD5加密区分大小写,加密出来的结果不同。 public class MD5Util { private static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e
  • iOS移动开发MD5加密

    2015-11-04 10:13:49
    iOS开发中常用到的字符串进行MD5加密区分32位大小写加密,16位大小写加密
  • #region MD5加密 /// <summary> /// 16位MD5加密 /// </summary> /// <param name="password"></param> /// <returns></returns> public static string MD5Encrypt16...
  • iOS MD5加密

    2017-12-25 17:14:32
    1.MD5加密全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”  1.1MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32...
  • error("MD5加密异常:{}"+e); }return null; } private static String hex(byte[] arr) { StringBuffer sb = new StringBuffer(); for (int i = 0; i ; i++) { sb.append(Integer.toHexString(arr[i] & 0xFF | ...
  • 关于MD5加密

    2016-06-16 15:57:39
    MD5作为一种单项加密方式,常用在数据脱敏和软件数字签名等方面。以下是介绍正文:MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security ...
  • 关键代码 using System.Security; using System.Security.Cryptography; using System.Web; ... //MD5 不区分大小写的  //type 类型,16位还是32位,16位就是取32位的第8到16位  publ
  • java md5 加密

    2012-12-17 15:25:37
    /**  * md5或者sha-1加密  *  * @param inputText  * 要加密的内容 ... * 加密算法名称:md5或者sha-1,不区分大小写  * @return  */  private static String encrypt(String in
  • (1)首先先一个加密的类 package sy.util; import java.io.UnsupportedEncodingException;...import java.security.MessageDigest;...import java.security.NoSuchAlgorithmException;... * md5加密
  • 将字符串进行md5加密加密结果字母为大写),已经出方法,如下 public static String md5s(String plainText) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText....
  • 我以为这个是大家都知道的所以没发出来,那天有网友问起我才觉得很多入门者其实是需要的。发出来给入门者看。...大小写敏感。")] public string EncryptPassword(string PasswordString,string Passwo
  • MD5加密安全?

    2012-04-09 18:01:26
    那么网站使用md5加密,在数据库被爆后,安全性如何呢?我们来做个测试: 假设我的密码是lovemybaby,我们生成32位大写md5加密的样子,使用这个网址,如下图 MD5码是:DCE24495C43E06221928F3CE8C501856 ...
  • 1:MySQL 4.1版本之前是MySQL323加密 ...还原有函数:AES_ENCRYPT()加密函数和AES_DECRYPT()解密函数和MD5()加密。 MySQL数据库中自带old_password(str)和password(str)函数,前者是MySQL323加密,后者是MySQLSHA1方
  • C#MD5加密

    2012-12-11 09:22:47
    1.生成的MD5字符串,这些字母表示的是16进制数,因此不区分大小写,所以大写小写都可以 2.item.ToString("x2")) 中的x2 --> x表示小写,X表示大写,2表示用两位进行格式化 如果两个数10和26,正常情况十六进制...
  • 其实MD5加密就是用到了MessageDigest类的一种加密算法 MessageDigest类 MessageDigest类是一个引擎类,提供加密的安全消息功能,如SHA-256,SHA-512,MD5加密安全消息摘要采用任意大小的输入(字节数组),并...
  • MD5加密验签过程

    千次阅读 2018-05-17 14:16:37
    public class StrMD5 { public static String MD5(String info) throws Exception { MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(info.getBytes("UTF-...
  • iOS开发 关于MD5加密的相关使用

    千次阅读 2016-06-08 16:18:38
    MD5简介 简单说明: MD5:全称是Message Digest Algorithm 5,译为“消息摘要算法第5版” 效果:对输入信息生成唯一的128位散列值(32个字符) MD5生成的是固定的128bit,即128个0和1的二进制位,而在实际...
  • 这次项目中在跟甲方的技术共同实现同步登录功能时,发现对方同步过来的MD5密文 一会大写一会小写(我觉得这就是不规范啊,不管区分不区分大小写都应该传递统一的格式啊),还质疑了对面(好丢人的说),他们使用的是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,726
精华内容 5,890
关键字:

md5加密区分大小写