-1

次のコード (CC_SHA256) を使用して NSString 入力をエンコードしています。同じロジックを使用して、デコードされた形式で取得するのを手伝ってくれる人はいますか?

    -(NSString*) encodeAndGetHashInfo :(NSString *) inStringToHashIt
{
    NSDate *currentDate = [NSDate date];
    NSLog(@"currentDate %@",currentDate);


    NSTimeInterval currTimeMillsecs = ([currentDate timeIntervalSince1970] * 1000);
    NSString *strCurrTimeMilliSecs = [NSString stringWithFormat:@"%.0f", currTimeMillsecs]; 
    NSLog(@"strCurrTimeMilliSecs: %@", strCurrTimeMilliSecs);  //here we are getting millsec in  this way 1328962624994.734131
    //double currentTime=[strCurrTimeMilliSecs doubleValue];

    //Do hashing    
    NSString *withSalt= [NSString stringWithFormat:@"%@%@%@", strCurrTimeMilliSecs, inStringToHashIt,STATIC_HASH];

    NSLog(@"withSalt.%@",withSalt);

    NSString *inputStr = withSalt;

    unsigned char hashedChars[32];
    CC_SHA256([inputStr UTF8String],
              [inputStr lengthOfBytesUsingEncoding:NSUTF8StringEncoding], 
              hashedChars);

    NSData * hashedData = [NSData dataWithBytes:hashedChars length:32];
    NSLog (@"hashedData:%@",hashedData );
    NSString* hashPasswordResponse = NULL;
    hashPasswordResponse = [NSString stringWithFormat:@"%@", hashedData];       

    hashPasswordResponse = [hashPasswordResponse stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    NSLog(@"hashPasswordResponse.......%@",hashPasswordResponse);//this string is 

    return hashPasswordResponse;
}
4

2 に答える 2

2

SHAはハッシュアルゴリズムであり、デコードされることはできません。

Jonathan Grynspanが言ったように、sha (任意のバージョン) をデコードできれば、そのようなアルゴリズムの目的が無効になります。

于 2012-04-16T13:56:49.783 に答える
1

他の人が指摘しているように、SHA-1とSHA-2のバリアントは、設計上、一方向のハッシュです。それらを元に戻すことができれば、ハッシュは壊れています。ハッシュは、データの暗号化を提供するのではなく、データの整合性をチェックするように設計されています。

ハッシュではなく暗号化/復号化が必要な場合は、CommonCryptoのCCCryptorルーチンの1つを使用する必要があります。見る:

AES暗号化復号化用のカカオソースコードはありますか?

于 2012-04-16T14:32:50.857 に答える