首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据另一个字符串iOS生成唯一的数字字符串

根据另一个字符串iOS生成唯一的数字字符串
EN

Stack Overflow用户
提问于 2013-12-16 14:48:34
回答 3查看 840关注 0票数 0

我想要生成一个独特的数字串-长6-8位,基于另一个字符串。

我有一个包含电子邮件地址的字符串。然后,当我点击一个按钮,我得到另一个字符串包含一个独特的6-8位数字,基于该电子邮件地址。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-16 15:54:18

其他人建议使用加密安全的MD5哈希。

如果您不关心密码安全性,也可以只使用内置的散列函数:

代码语言:javascript
运行
复制
NSUInteger *emailHash = [emailAddressString hash];

由于您正在转换成一个数字是一个电子邮件地址,似乎加密是过火。

票数 5
EN

Stack Overflow用户

发布于 2013-12-16 14:54:04

您可以创建一个MD5哈希。

H2CO3为此发布了一个类别:NSString-MD5

你将不得不#import "NSString-MD5"

然后您可以创建一个散列:

代码语言:javascript
运行
复制
NSString *emailHash = [email MD5Hash];

执照是公有的。

正如罗曼底所指出的:没有任何保证你将得到绝对唯一的值,这适用于任何固定结果大小的散列方法(即,对于无限数量的输入变体,结果的数量有限)。

票数 1
EN

Stack Overflow用户

发布于 2013-12-16 16:02:25

在字符串上创建一个md5哈希。CC_MD5返回16个字节。如果要使用8个字节,则可以丢弃其他字节,但需要检查唯一性(与先前接收或存储的值进行比较)。

代码语言:javascript
运行
复制
#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>
#import <CommonCrypto/CommonCryptor.h>


+ (NSString *)md5String:(NSString *)plainText
{
    if(plainText == nil || [plainText length] == 0)
        return nil;

    const char *value = [plainText UTF8String];
    unsigned char outputBuffer[CC_MD5_DIGEST_LENGTH];
    CC_MD5(value, strlen(value), outputBuffer);

    NSMutableString *outputString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(NSInteger count = 0; count < CC_MD5_DIGEST_LENGTH; count++){
        [outputString appendFormat:@"%02x",outputBuffer[count]];
    }
    NSString * retString = [NSString stringWithString:outputString];
    [outputString release];
    return retString;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20613686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档