0
我想通過加密來保護我的sqlite數據庫,除非我需要使用動態密鑰而不是硬編碼的密碼,否則任何想法如何生成此密鑰?如何爲EncryptedStore生成動態PassphraseKey而不是硬編碼?
我想通過加密來保護我的sqlite數據庫,除非我需要使用動態密鑰而不是硬編碼的密碼,否則任何想法如何生成此密鑰?如何爲EncryptedStore生成動態PassphraseKey而不是硬編碼?
你使用什麼樣的加密方法?無論如何,你可以生成一個密鑰使用哈希函數如MD5或SHA 256
這裏的MD5函數
-(NSString*) getMD5fromString:(NSString*)baseString
{
if ([self isNull:baseString])
return nil;
const char *cStr = [baseString UTF8String];
unsigned char resultChar[CC_MD5_DIGEST_LENGTH];
CC_MD5(cStr, (CC_LONG)strlen(cStr), resultChar);
NSString *md5 = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
resultChar[0], resultChar[1], resultChar[2], resultChar[3],
resultChar[4], resultChar[5], resultChar[6], resultChar[7],
resultChar[8], resultChar[9], resultChar[10], resultChar[11],
resultChar[12], resultChar[13], resultChar[14], resultChar[15]];
return md5;
}
這裏SHA256功能
-(NSString*)getSHA256fromString:(NSString*)baseString
{
const char* str = [baseString UTF8String];
unsigned char result[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(str, (unsigned int)strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
for(int i = 0; i<CC_SHA256_DIGEST_LENGTH; i++)
{
[ret appendFormat:@"%02x",result[i]];
}
return ret;
}
例如,你可以生成你的加密/解密密鑰通過這種方式:
NSString* cipherKey = [self getMD5fromString:[NSString stringWithFormat:@"%@_%@",self.loggedUserUuid,self.localMachineName]];
通過這種方式,你有一個生成該設備上的該用戶的關鍵影響
希望它有幫助!
thnx盧卡,其實我做了類似的事情,它工作正常,所以這個解決方案看起來也工作 –