투케이2K

486. (ios/swift5) [CryptoSwift] 데이터 암복호화 라이브러리 사용해 AES256 복호화 수행 본문

IOS

486. (ios/swift5) [CryptoSwift] 데이터 암복호화 라이브러리 사용해 AES256 복호화 수행

투케이2K 2024. 4. 15. 20:12
반응형

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [테스트 메인 함수 정의 실시]
    // -----------------------------------------------------------------------------------------
    func testMain() {
        S_Log._D_(description: "테스트 함수 시작 실시", data: nil)
        
        
        /*
        // -------------------------------------------------------
        [요약 설명]
        // -------------------------------------------------------
        1. CryptoSwift 라이브러리는 Ios 에서 간편하게 데이터 암복호화를 사용할 수 있는 라이브러리입니다
        // -------------------------------------------------------
        2. 필요 import : import CryptoSwift
        // -------------------------------------------------------
        3. CryptoSwift 라이브러리 Git 공식 사이트 : https://github.com/krzyzanowskim/CryptoSwift.git
        // -------------------------------------------------------
        4. 라이브러리 추가 방법 참고 사이트 : https://blog.naver.com/kkh0977/223414949598
        // -------------------------------------------------------
        */
        
        
        // [로직 처리 실시]
        DispatchQueue.main.async {
            
            do {
                // [초기 변수 선언]
                let str = "pZwJZBLuy3mDACEQT4YTBw=="
                
                
                // [aes 인코딩 및 디코딩에 필요한 값 정의]
                let aesKey = "0123456789abcdef0123456789abcdef" // [32 바이트]
                let key : [UInt8] = Array(aesKey.utf8)

                //let aesIV = "" // [16 바이트]
                //let iv : [UInt8] = Array(aesIV.utf8)
                let iv : [UInt8] = Array(repeating: 0, count: 16) // [0 값 채우기]

                
                // [aes 디코딩 수행] : [CBC]
                let aes = try! AES(key: key, blockMode: CBC(iv: iv) as BlockMode, padding: .pkcs7)
                let decrypted = try aes.decrypt(Array(base64: str))
                let decodeStr = String(bytes: decrypted, encoding: .utf8)
                
                
                // [로그 출력]
                S_Log._D_(description: "로그 출력 수행", data: [
                    "str :: \(str)",
                    "key :: \(key)",
                    "iv :: \(iv)",
                    "decodeStr :: \(decodeStr ?? "")"
                ])

            }
            catch {
                S_Log._D_(description: S_FinalMsg.LOG_BUG_STATE, data: [
                    "catch :: \(error.localizedDescription)"
                ])
            }
            
        }

    }
 

[결과 출력]

 

 

반응형
Comments