상세 컨텐츠

본문 제목

Java, C# 간에 라인달 128비트 암호화 프로그램

C#

by 탑~! 2017. 5. 16. 09:39

본문


Java, C# 간에 라인달 128비트 암호화 프로그램/- .Net 2011.11.14 16:24


JAVA


import javax.crypto.*;

import javax.crypto.spec.*;

import java.io.*;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;


class JavaEnCryto

{

           public static void main(String[] args)

           {

                     try

                     {

                                System.out.println(Encrypt("abc@naver.com","_dhqxlak2010_"));

                     }

                     catch (Exception ex)

                     {

                                System.out.println("오류");

                     }


           }


           public static String Decrypt(String text, String key) throws Exception

           {

                     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

                     byte[] keyBytes= new byte[16];

                     byte[] b= key.getBytes("UTF-8");

                     int len= b.length;

                     if (len > keyBytes.length) len = keyBytes.length;

                     System.arraycopy(b, 0, keyBytes, 0, len);

                     SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

                     IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);

                     cipher.init(Cipher.DECRYPT_MODE,keySpec,ivSpec);


                     BASE64Decoder decoder = new BASE64Decoder();

                     byte [] results = cipher.doFinal(decoder.decodeBuffer(text));

                     return new String(results,"UTF-8");

           }


           public static String Encrypt(String text, String key) throws Exception

           {

                     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

                     byte[] keyBytes= new byte[16];

                     byte[] b= key.getBytes("UTF-8");

                     int len= b.length;

                     if (len > keyBytes.length) len = keyBytes.length;

                     System.arraycopy(b, 0, keyBytes, 0, len);

                     SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

                     IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);

                     cipher.init(Cipher.ENCRYPT_MODE,keySpec,ivSpec);


                     byte[] results = cipher.doFinal(text.getBytes("UTF-8"));

                     BASE64Encoder encoder = new BASE64Encoder();

                     return encoder.encode(results);

           }

}

---------------------------------------------------------------------------------------------------------------------

C#


using System;

using System.IO;

using System.Text;

using System.Security.Cryptography;


namespace AESWithJava.Con

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine(Encrypt("abc@naver.com", "_dhqxlak2010_"));

        }


        public static string Decrypt(string textToDecrypt, string key)

        {

            RijndaelManaged rijndaelCipher = new RijndaelManaged();

            rijndaelCipher.Mode = CipherMode.CBC;

            rijndaelCipher.Padding = PaddingMode.PKCS7;


            rijndaelCipher.KeySize = 128;

            rijndaelCipher.BlockSize = 128;

            byte[] encryptedData = Convert.FromBase64String(textToDecrypt);

            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);

            byte[] keyBytes = new byte[16];

            int len = pwdBytes.Length;

            if (len > keyBytes.Length)

            {

                len = keyBytes.Length;

            }

            Array.Copy(pwdBytes, keyBytes, len);

            rijndaelCipher.Key = keyBytes;

            rijndaelCipher.IV = keyBytes;

            byte[] plainText = rijndaelCipher.CreateDecryptor().TransformFinalBlock(encryptedData, 0, encryptedData.Length);

            return Encoding.UTF8.GetString(plainText);

        }


        public static string Encrypt(string textToEncrypt, string key)

        {

            RijndaelManaged rijndaelCipher = new RijndaelManaged();

            rijndaelCipher.Mode = CipherMode.CBC;

            rijndaelCipher.Padding = PaddingMode.PKCS7;


            rijndaelCipher.KeySize = 128;

            rijndaelCipher.BlockSize = 128;

            byte[] pwdBytes = Encoding.UTF8.GetBytes(key);

            byte[] keyBytes = new byte[16];

            int len = pwdBytes.Length;

            if (len > keyBytes.Length)

            {

                len = keyBytes.Length;

            }

            Array.Copy(pwdBytes, keyBytes, len);

            rijndaelCipher.Key = keyBytes;

            rijndaelCipher.IV = keyBytes;

            ICryptoTransform transform = rijndaelCipher.CreateEncryptor();

            byte[] plainText = Encoding.UTF8.GetBytes(textToEncrypt);

            return Convert.ToBase64String(transform.TransformFinalBlock(plainText, 0, plainText.Length));

        }


    }

}



Java, C# 간에 라인달 128비트 암호화 프로그램.txt


'C#' 카테고리의 다른 글

C# 웹서비스로 JSON 결과값 생성하기  (0) 2017.05.23
Log4Net  (0) 2017.05.23
C# 에서 Timer 사용할 때 주의할 점.  (0) 2017.01.02
세가지 Timer 와 그 차이점  (0) 2017.01.02
듀얼 모니터에서 WPF Window 배치하기  (0) 2016.12.14

관련글 더보기