亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 iOS-Objective C 上簽名的數據在 Java 中驗證時總是返回 false

在 iOS-Objective C 上簽名的數據在 Java 中驗證時總是返回 false

慕容708150 2022-06-04 14:52:28
iOS 代碼://step 1//start of key pair genrationNSString * PrivTagString = @"com.manish.rsa.privIdentifier";NSString * PubTagString = @"com.manish.rsa.pubIdentifier"; privateTag = [PrivTagString dataUsingEncoding:NSUTF8StringEncoding]; publicTag = [PubTagString dataUsingEncoding:NSUTF8StringEncoding];NSDictionary *privateAttributes = @{(NSString *)kSecAttrIsPermanent: @YES, (NSString *)kSecAttrApplicationTag: privateTag};NSDictionary *publicAttributes = @{(NSString *)kSecAttrIsPermanent: @YES, (NSString *)kSecAttrApplicationTag: publicTag};NSDictionary *pairAttributes = @{(NSString *)kSecAttrKeyType: (NSString *)kSecAttrKeyTypeRSA, (NSString *)kSecAttrKeySizeInBits: @2048, (NSString *)kSecPublicKeyAttrs: publicAttributes, (NSString *)kSecPrivateKeyAttrs: privateAttributes};OSStatus osStatus = SecKeyGeneratePair((CFDictionaryRef)pairAttributes, &publicKeyRef, &privateKeyRef);switch (osStatus) {    case noErr:        break;    default:        break;}//end of key pair key genration//step2//export ublic key for java serverNSLog(@"%@",[self getPublicKeyAsBase64ForJavaServer]);//step3//Create the SHA256 digest of the custom string with CC_SHA256NSString *stringToSign = @"Manish";NSMutableData *hash = [NSMutableData dataWithLength:(NSUInteger)CC_SHA256_DIGEST_LENGTH];NSData *data = [stringToSign dataUsingEncoding:NSUTF8StringEncoding];CC_SHA256(data.bytes, (CC_LONG)data.length, hash.mutableBytes);//step4// Sign the hash with the private keysize_t blockSize = SecKeyGetBlockSize(privateKeyRef);NSUInteger hashDataLength = hash.length;const unsigned char *hashData = (const unsigned char *)hash.bytes;NSMutableData *result = [NSMutableData dataWithLength:blockSize];uint8_t *signedHashBytes = malloc(blockSize * sizeof(uint8_t));memset((void *) signedHashBytes, 0x0, blockSize);size_t encryptedDataLength = blockSize;
查看完整描述

1 回答

?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

我在代碼中發現了錯誤,因為我在鑰匙串中創建密鑰時保存了密鑰,所以第一次如果我使用簽名密鑰和公鑰,它會在 java 端正確驗證,但下次我再次創建相同的密鑰和標識符時舊鑰匙仍然存在于鑰匙串中,所以給我帶來了麻煩。為了解決這個問題,我剛剛從鑰匙串中刪除了鑰匙,然后再次創建它們,現在它工作正常;)



查看完整回答
反對 回復 2022-06-04
  • 1 回答
  • 0 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號