2014. 5. 3. 23:43
안드로이드
첨부된 바운시캐슬 암호화 라이브러리를 참조에 추가하고 사용해야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | using System; using System.Security.Cryptography; using System.IO; using System.Text; using System.Xml; using System.Collections.Generic; using System.Linq; using Org.BouncyCastle.Security; using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Crypto.Parameters; /* 사용법 GoogleSignatureVerify gsv = new GoogleSignatureVerify("발급받은 API키"); if (gsv.Verify("결제데이터", 사인데이터)) { //성공시 처리 } */ public class GoogleSignatureVerify { RSAParameters _rsaKeyInfo; public GoogleSignatureVerify(String GooglePublicKey) { RsaKeyParameters rsaParameters = (RsaKeyParameters)PublicKeyFactory.CreateKey(Convert.FromBase64String(GooglePublicKey)); byte[] rsaExp = rsaParameters.Exponent.ToByteArray(); byte[] Modulus = rsaParameters.Modulus.ToByteArray(); // Microsoft RSAParameters modulo wants leading zero's removed so create new array with leading zero's removed int Pos = 0; for (int i = 0; i < Modulus.Length; i++) { if (Modulus[i] == 0) { Pos++; } else { break; } } byte[] rsaMod = new byte[Modulus.Length - Pos]; Array.Copy(Modulus, Pos, rsaMod, 0, Modulus.Length - Pos); // Fill the Microsoft parameters _rsaKeyInfo = new RSAParameters() { Exponent = rsaExp, Modulus = rsaMod }; } public bool Verify(String Message, String Signature) { using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.ImportParameters(_rsaKeyInfo); return rsa.VerifyData(Encoding.ASCII.GetBytes(Message), "SHA1", Convert.FromBase64String(Signature)); } } } | cs |
유니티를 사용하신다면 아래 유니티 패키지를 임포트 하시면 바운시 캐슬 라이브러리소스가 임포트됩니다.
'안드로이드' 카테고리의 다른 글
구글플레이 유저 토큰 서버 인증 (0) | 2016.10.28 |
---|---|
이클립스 레이아웃편집시 느릴경우 이클립스 자바 메모리 관련설정하기 (0) | 2014.06.01 |
티스토어(T-Store) 인앱 영수증 검증 C#버전(t-store in-app purchase receipt verification) (0) | 2014.05.03 |
프로가드 오류 (0) | 2014.05.02 |
[구글인앱]Testing Your In-app Billing Application(인앱 빌링 애플리케이션 테스트) #5 (0) | 2014.05.02 |