2016-03-20 17 views
0

私はSHA1を迅速に動かそうとしています。 CommonCryptoを使用しないで を使用すると、迅速にデフォルトではないためです。SHA1のHMACなし機能

(それは投稿するビッグに少しだから)私はXcodeでテストケース実行する場合

https://gist.github.com/wdg/f7c8c4088030c59f0f45を参照してください:私が得た

func test_sha1() { 
    XCTAssertEqual(sha1("test"), "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3") 
} 

を、それは失敗し、2d891cc96e32c32e8d26704d101208b954f435a5

を返します。ハッシュ:

$ php -r "echo sha1('test');echo(PHP_EOL);" 
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 

私はpと思う問題はjavacriptファイルで、彼らは>>>を使用していますが、私はこの演算子が何であるか分かりません。 だから私は>>を使用しました。

誰かが助けてくれることを願っています。

ありがとうございます。

+0

http://stackoverflow.com/questions/7718711/javascript-triple-greater-than – sschale

答えて

0

解決策がありました。回転機能に問題がありました。

私は

func rotate(n: Int, _ s: Int) -> Int { 
    return ((n << s) & 0xFFFFFFFF) | (n >> (32 - s)) 
} 

に回転機能を変更した今では動作します。

1

いくつかの理由でCommon Cryptoを使用してください。1.正しいです。 2. FIPS 140-2認定を受けています。 3.コードベースのSwift実装よりも1000倍以上高速です。

注:Common Cryptoはハードウェア暗号化エンジンを使用します。

だけ含むと架橋ヘッダ追加:SHA256ため

#import <CommonCrypto/CommonCrypto.h> 

例コード(SHA1がもはや使用されるべきではない):

func sha256(dataIn dataIn:NSData) -> NSData { 
    let digest: NSMutableData! = NSMutableData(length: Int(CC_SHA256_DIGEST_LENGTH)); 
    CC_SHA256(dataIn.bytes, CC_LONG(dataIn.length), UnsafeMutablePointer<UInt8>(digest.mutableBytes)); 
    return digest; 
} 

又は

func sha1(dataIn dataIn:NSData) -> NSData { 
    let digest: NSMutableData! = NSMutableData(length: Int(CC_SHA1_DIGEST_LENGTH)); 
    CC_SHA1(dataIn.bytes, CC_LONG(dataIn.length), UnsafeMutablePointer<UInt8>(digest.mutableBytes)); 
    return digest; 
} 

又は

func sha1(string string: String) -> [UInt8] { 
    var digest = [UInt8](count: Int(CC_SHA1_DIGEST_LENGTH), repeatedValue: 0) 
    if let data = string.dataUsingEncoding(NSUTF8StringEncoding) { 
     CC_SHA1(data.bytes, CC_LONG(data.length), &digest) 
    } 
    return digest 
} 
+0

問題は、私はフレームワークでSHA1を使用する必要があり、フレームワークはブリッジヘッダーをサポートしないため、使用できないということです。 –

+0

[bugreport.apple.com](https://idmsa.apple.com/IDMSWebAuth/login.html?appIdKey=77e2a60d4bdfa6b7311c854a56505800be3c24e3a27a670098ff61b69fc5214b&sslEnabled=true&rv=3)。 Frameworkに共通の暗号化ソリューションがあります。 GitHubにはSHA1のSwift実装もあります。それはまた、より具体的な質問に役立ちます。 – zaph

関連する問題