0

cryptojs を使用して JavaScript で実装されていますが、cryptoswift を使用して迅速に同じことを行うことはできません。以下のコードを見ると、javascript でキー、iv、および暗号文がどのように生成されるかを理解できません。cryptoswift を使用して Swift で同じことを行うというアイデアはありません。

decryptPayloadQR(ciphertextStr, SecretKey) {

try {
     let key = CryptoJS.enc.Utf8.parse(SecretKey);
     var ciphertext = CryptoJS.enc.Base64.parse(ciphertextStr);
     var iv = ciphertext.clone();
     iv.sigBytes = 16;
     iv.clamp();
     ciphertext.words.splice(0, 4);
     ciphertext.sigBytes -= 16;
     var decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, key, {
       iv: iv
     });
     console.log("===decrypted.toString(CryptoJS.enc.Utf8)=",decrypted.toString(CryptoJS.enc.Utf8));
     return decrypted.toString(CryptoJS.enc.Utf8);
   } catch (error) {
     console.log("===error in decrpt fun === : ",error);
     return false
   }
 }

結果は、json に変換できる文字列です。

以下のSwiftコード。

    let encryptedString = "OdqBIN4twOxKwe1aIZhTatkzVdfvN/mfB2Arra38tF25+3efc+Kl+HABZtqiGrTIihSpfW/XHW8+31Rl+uHZB2immfB6/w8E2j5ylCV8RKrqHVMMB7BPBLyr8oTuxmYEla1J1NxywLFPyNZCI4zmkYczwVSyssd5VKWH8WaBHR5Yai6MaxugdohW40byPx6xqbhwjHN5w+dh3dJBSFbM5EhQTqPwfBA1v1UBrCXooay47keSFor/7ywjV3e2bU5JrL0o+S26UF6zoVkRP1tdGAY3TqYyrPLUHVq0nIzkmnZdQk5gFGjN0sF58WdhuqjgRAtSrbmL5biuOtmQHFmNx4sUjkF4pYvfYxrj3ze2H/6G03cxCzW/DUytV678IBrd"

//======== iv & cipher text should be same as generated in above javascript code ==========//
        //======== Should these keys be in hex =======//
        let iv = "" /* No idea how to get iv from encrypted string */
        let cipherText = "" /* No idea how to get cipherText from encrypted string */
        let key = "abababababababab"

        do {
            let decryptor = try AES(key: key, iv: iv)
            let decryptedBytes = try decryptor.decrypt(cipherText.bytes)
            print(String(bytes: decryptedBytes, encoding: .utf8)!)
        } catch {
            print(error)
        }

javascriptの場合と同様に、swiftのiv、キー、および暗号テキストを取得するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1