SHA256 Swift 到 Objective C 等价
SHA256 Swift to Objective C equivalence
大家好,我是第一次使用 SHA256,我正在尝试学习这方面的教程,我的问题是在 SHA 256 的 Objective C 中编写等效项。我正在尝试了解我在下面向您展示的功能,但我仍然无法确定如何找到此 Swift 功能
的 Objective C 中的等价项
let rsa2048Asn1Header:[UInt8] = [
0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00
]
private func sha256(data : Data) -> String {
var keyWithHeader = Data(bytes: rsa2048Asn1Header)
keyWithHeader.append(data)
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
keyWithHeader.withUnsafeBytes {
_ = CC_SHA256([=12=], CC_LONG(keyWithHeader.count), &hash)
}
return Data(hash).base64EncodedString()
}
你能帮帮我吗?
在 Objective-C 中处理原始字节通常比 Swift 更直接一些。像这样的实现应该是等价的。
#define RSA_2048_ASN1_HDR_LEN 24
- (NSString *)sha256:(NSData *)data {
NSMutableData *keyWithHeader = [NSMutableData dataWithBytes:rsa2048Asn1Header length:RSA_2048_ASN1_HDR_LEN];
[keyWithHeader appendData:data];
UInt8 hash[CC_SHA256_DIGEST_LENGTH] = { 0 };
CC_SHA256(keyWithHeader.bytes, (CC_LONG) keyWithHeader.length, hash);
return [[NSData dataWithBytes:hash length:CC_SHA256_DIGEST_LENGTH] base64EncodedStringWithOptions:0];
}
请注意,您还需要将通用加密库导入到您的 Objective-C 文件中:
#import <CommonCrypto/CommonDigest.h>
大家好,我是第一次使用 SHA256,我正在尝试学习这方面的教程,我的问题是在 SHA 256 的 Objective C 中编写等效项。我正在尝试了解我在下面向您展示的功能,但我仍然无法确定如何找到此 Swift 功能
的 Objective C 中的等价项let rsa2048Asn1Header:[UInt8] = [
0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00
]
private func sha256(data : Data) -> String {
var keyWithHeader = Data(bytes: rsa2048Asn1Header)
keyWithHeader.append(data)
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
keyWithHeader.withUnsafeBytes {
_ = CC_SHA256([=12=], CC_LONG(keyWithHeader.count), &hash)
}
return Data(hash).base64EncodedString()
}
你能帮帮我吗?
在 Objective-C 中处理原始字节通常比 Swift 更直接一些。像这样的实现应该是等价的。
#define RSA_2048_ASN1_HDR_LEN 24
- (NSString *)sha256:(NSData *)data {
NSMutableData *keyWithHeader = [NSMutableData dataWithBytes:rsa2048Asn1Header length:RSA_2048_ASN1_HDR_LEN];
[keyWithHeader appendData:data];
UInt8 hash[CC_SHA256_DIGEST_LENGTH] = { 0 };
CC_SHA256(keyWithHeader.bytes, (CC_LONG) keyWithHeader.length, hash);
return [[NSData dataWithBytes:hash length:CC_SHA256_DIGEST_LENGTH] base64EncodedStringWithOptions:0];
}
请注意,您还需要将通用加密库导入到您的 Objective-C 文件中:
#import <CommonCrypto/CommonDigest.h>