메뉴 건너뛰기

라이온하트 2nd edition

홈페이지를 새롭게 리뉴얼합니다.

조회 수 85573 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


1. Encrypt
     //-----------------------------------------------------------------------------
    public static void SerializeEncryptObject(string path, object obj, System.Type type, SymmetricAlgorithm key)
    {
        using(FileStream fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using(CryptoStream cs = new CryptoStream(fs, key.CreateEncryptor(), CryptoStreamMode.Write))
            {
                using(StreamWriter sw = new StreamWriter(cs, Encoding.UTF8))
                {                
                    try
                    {
                        XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
                        ns.Add("", "");
                        
                        XmlSerializer serializer = new XmlSerializer(type);
                        serializer.Serialize(sw, obj, ns);
                    }
                    catch (System.Exception ex)
                    {
                        Debug.LogWarning(ex.ToString());    
                    }
                    finally
                    {
                        sw.Close();
                        cs.Close();
                        fs.Close();
                    }
                }
            }
        }
    }    

2. Decrypt
    //-----------------------------------------------------------------------------
    public static string LoadXmlFromEncryptFile(string _filePath, SymmetricAlgorithm key)
    {
        if (File.Exists(_filePath) == false)
        {
            _deserializeErrorString = System.String.Format("File({0}) does not exists", _filePath);
            return "";
        }
        
        using(FileStream fs = File.Open(_filePath, FileMode.Open))
        {
            using(CryptoStream cs = new CryptoStream(fs, key.CreateDecryptor(), CryptoStreamMode.Read))
            {
                using(StreamReader sr = new StreamReader(cs, Encoding.UTF8))
                {
                    try
                    {
                        return sr.ReadToEnd();
                    }
                    catch(System.Exception ex)
                    {
                        Debug.LogWarning(ex.ToString());
                        _deserializeErrorString = ex.ToString();
                    }
                    finally
                    {
                        sr.Close();
                        cs.Close();
                        fs.Close();
                    }
                }
            }
        }
        
        return "";
    }

3. Usage
-
private readonly string SECRET_KEY = "12345678";    // must be 64bit, 8bytes

private System.Security.Cryptography.DESCryptoServiceProvider mCryptoProvider = null;

mCryptoProvider = new System.Security.Cryptography.DESCryptoServiceProvider();
mCryptoProvider.Key = System.Text.ASCIIEncoding.ASCII.GetBytes(SECRET_KEY);        mCryptoProvider.IV = System.Text.ASCIIEncoding.ASCII.GetBytes(SECRET_KEY);

-
SerializeEncryptObject("FilePath", Type, mCryptoProvider);
string xmlString = LoadXmlFromEncryptFile("FilePath", mCryptoProvider);


http://limchaeng.tistory.com/21


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
4 IOS [ 유니티3D엔진 ] Object serializing in Unity on iOS devices. badung007 2014.08.26 65939
» IOS [ 유니티3D엔진 ] XML Serialize Encrypt/Decrypt. badung007 2014.08.26 85573
2 IOS [ 유니티3D엔진 ] 유니티의 iOS 빌드는 왜 다른가? badung007 2014.08.26 74528
1 IOS 유저 기기 고유 ID [SystemInfo.deviceUniqueIdentifier] file badung007 2014.04.25 106042
Board Pagination ‹ Prev 1 Next ›
/ 1