我有一個iPhone應用程序使用CCCrypt(AES256)和明文密鑰加密輸入的NSString。字符串和鍵被賦予加密方法,該方法返回一個NSData對象。在obj-c中將NSData加密爲NSString?
請求[數據說明其中「數據」是加密的字符串數據給出一個NSString像:「< 0b368353 a707e7de 3eee5992 ee69827e e3603dc2 b0dbbc0b 861ca87d f39ce72a>」,但是當我試圖將其轉換成一個NSString,我得到「(空值)」。
我需要返回一個NSString給用戶,它可以用於使用相同的明文密鑰解密回原始字符串。如果NSData對象的'description'屬性可以返回一個字符串,是否有任何方法可以從NSData對象生成一個NSString而不會得到「(null)」?
更新:感謝奎因,誰建議使用Base64編碼產生混亂的字符串。據我所知,Base64編碼不會簡單地交換字符,但字符交換取決於位置,所以這很好。
我唯一擔心的是我希望能夠使用「密碼」加密消息,並且需要在混淆的字符串需要解碼時輸入相同的密碼短語 - 任何人都可以提出實現此方法的方法嗎?
我已經更新了我的答案,以解決下面的問題。你是對的,Base64不是一種替代算法 - 它基本上將3個字節擴展爲4個字節,所以編碼數據是其非編碼數據的1.37倍。基本上,它需要3個8位塊並將其重新分爲4個6位塊,然後將每個塊重新解釋爲8位塊,這些塊可以很容易地用ASCII表示。維基百科有更多的細節。 –