티스토리 뷰
VB CODE
strProvider = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" & vbNullChar
lngHashType = CALG_MD5
lngAlgoType = CALG_AES_128
strPassword = "secretPassphrase"
If CBool(CryptAcquireContext(g_lngCryptoContext, ByVal strTemp, _
ByVal strProvider, PROV_RSA_AES, CRYPT_VERIFYCONTEXT)) Then
GetProvider = True
else
GoTo CleanUp
End If
If Not CBool(CryptCreateHash(g_lngCryptoContext, lngHashType, ByVal 0&, _ByVal 0&, lngHashHnd)) Then
MsgBox "Error: " & CStr(GetLastError) & " during CryptCreateHash!", _vbExclamation Or vbOKOnly, "Encryption Errors"
GoTo CleanUp
End If
If Not CBool(CryptHashData(lngHashHnd, strPassword, Len(strPassword), ByVal 0&)) Then
MsgBox "Error: " & CStr(GetLastError) & " during CryptHashData!", _
vbExclamation Or vbOKOnly, "Encryption Errors"
GoTo CleanUp
End If
If Not CBool(CryptDeriveKey(g_lngCryptoContext, lngAlgoType, _lngHashHnd, ByVal CRYPT_NO_SALT, lngkey)) Then
MsgBox "Error: " & CStr(GetLastError) & " during CryptDeriveKey!", _
vbExclamation Or vbOKOnly, "Encryption Errors"
GoTo CleanUp
End If
If lngHashHnd <> 0 Then
lngRetCode = CryptDestroyHash(lngHashHnd)
End If
lngHashHnd = 0
lngEncDataLength = Len(g_strInData)
lngEnctBuffLen = lngEncDataLength * 2
strEncBuffer = String$(lngEnctBuffLen, vbNullChar)
LSet strEncBuffer = g_strInData
If Not CBool(CryptEncrypt(lngkey, ByVal 0&, ByVal 1&, ByVal 0&, _strEncBuffer, lngEncDataLength, lngEnctBuffLen)) Then
MsgBox "Bytes required:" & CStr(lngEnctBuffLen) & vbCrLf & vbCrLf & _
"Error: " & CStr(GetLastError) & " during CryptEncrypt!", _
vbExclamation Or vbOKOnly, "Encryption Errors"
GoTo CleanUp
End If
strOutData = Mid$(strEncBuffer, 1, lngEncDataLength)
g_abytOutData = StringToByteArray(strOutData)
여기까가 VB CODE 샘플 코드 입니다.생각보다 간단하시죠..그럼 더 간단한 JAVA CODE 한번 알아볼게요.
JAVA CODE
String password = "secretPassphrase";
String text = "text to encrypt";
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(password.getBytes("UTF-8"), 0, password.length());
byte[] rawKey = md.digest();
byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
IvParameterSpec ivSpec = new IvParameterSpec(iv);
SecretKeySpec skeySpec = new SecretKeySpec(rawKey, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "SunJCE");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivSpec);
byte[] encrypted = cipher.doFinal(text.getBytes("UTF-8"));
System.out.println(toHex(encrypted));
-
이재하 안녕하세요 혹시 VB6 된 샘플 소스를 받아 볼 수 있을까요? ㅠ 2018.07.04 15:04 신고
-
코니79 코니와함께 메일주소하나 주세요. 2018.07.04 17:29 신고
-
남용석 코니님 안녕하세요 죄송하지만 저도 샘플소스 하나 받아볼수있을까요? 메일 주소입니다~
ysgasoline@hanmail.net 2018.07.19 17:10 신고 -
코니79 코니와함께 용석님 샘플 메일 발송했습니다.관련 내용에 대한 궁금한 부분은 회신 주세요. 2018.07.19 21:31 신고
-
김명길 코니님,
저도 안드로이드앱용 암호화/해독화 함수를 만들었는데
우연히도 cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 으로 똑같습니다.
이제 vb6과 연동해야 하는데 어찌해야 할지 찾던 중입니다.
저도 vb6 암호화/해독화 소스가 필요합니다.
부탁드립니다.
anfyanfy99@nate.com
다음은 제가 만든 java 코드입니다
public static String func암호화결과(String text){
byte[] keyBytes= new byte[16];
byte[] b= new byte[0];
byte[] results = new byte[0];
Cipher cipher = null;
try {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
b = pub_companyname.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);
results = cipher.doFinal(text.getBytes("UTF-8"));
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String mm=android.util.Base64.encodeToString(results, 0);
mm=mm.trim();
return mm;
}
public static String func암호해독결과(String text) {
// Log.e("func암호해독결과=",text+"");
Cipher cipher = null;
byte[] keyBytes= new byte[16];
byte[] results = new byte[0];
try {
cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] b= pub_companyname.getBytes("UTF-8");
int len= b.length; //password와 같은 의미
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);
results = cipher.doFinal(android.util.Base64.decode(text, 0));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String dec_rtn=null;
try {
dec_rtn=new String(results,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return dec_rtn;
} 2018.10.08 08:20 신고 -
이형진 안녕하세요~
VB6코드는 실제로 암호화하는 전체코드는 아닌거죠?
혹시 전체코드로 부탁드려도 괜찮을까요? photojini@empal.com 부탁드려도 괜찮을까요? 2018.12.21 14:08 신고 -
코니79 코니와함께 EncAesConnie79파일로 메일 전달 드렸습니다.
이부분이 많이 헷갈려 하시는거 같습니다.
AES KEY 길이가 32 AES256
AES KEY 길이가 24 AES196
AES KEY 길이가 16 AES128
참고하세요.. 2018.12.21 14:28 신고 -
이형진 안녕하세요^^ 빠른 답변에 진심으로 감사드립니다~
제가 메일을 확인해보니 도착한게 없어서 죄송하지만 다시 한번 더 요청을 드려도 될까요?
photojini@daum.net 으로 부탁드리겠습니다. 혹시 empal 메일 문제가 아닐까 해서요. 감사합니다~ 2018.12.21 15:52 신고 -
코니79 코니와함께 네 메일다시 한번 확인을 해볼게요 2018.12.21 20:11 신고
-
코니79 코니와함께 보냈습니다. 2018.12.21 20:22 신고
-
Please 안녕하세요 java 와 vb 간에 암.복호화 관련 하여 문제가 많이 있었는데 혹시 위의 vb 샘플 소스를 보내 주실 수 있으신가요?
bwings2001@naver.com 입니다. 부탁 드리겠습니다. 감사합니다.
2018.12.26 15:40 신고 -
코니79 코니와함께 현재 해외에 있어 내년에 1월3일 이후 정도 전달드릴수 있을거 같습니다.
죄송합니다. 2018.12.26 15:41 신고 -
Please 아 그렇군요 ㅠㅠ 네 알겠습니다. 혹시라도 나중에 기억 나신다면 그 이후로라도 부탁 드려도 될까요? 2018.12.26 15:53 신고
-
조현 코니님 저도 vb6으로 된 자료 부탁드립니다. faran41@nate.com 2019.02.18 16:59 신고