2014-09-10 2 views
0

System.Security.Cryptography에는 DES 디코드 메서드가 포함되어 있지만 Windows Phone 8.1 프로그래밍 용 Windows.Security.Cryptography 네임 스페이스에는 DES 디코딩 방법이 포함되어 있지 않습니다.C# WP 8.1의 DES 디코딩

방금 ​​클래스를 찾았습니다. Windows.Security.Cryptography.Core.SymmetricAlgorithmNames.DesCbc, 하지만 DES 암호화 된 문자열을 해독하는 방법을 알지 못합니다. 나는 네가 생각하는 모든 생각을 고맙게 생각한다.

나는 그것을 얻었습니다. 코드 조각은 :

strAsymmetricAlgName = SymmetricAlgorithmNames.DesCbc; 
SymmetricKeyAlgorithmProvider objAlgProv = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAsymmetricAlgName); 

CryptographicKey keyPair = objAlgProv.CreateSymmetricKey(CryptographicBuffer.ConvertStringToBinary("xxx", BinaryStringEncoding.Utf8)); 

IBuffer val = CryptographicEngine.Decrypt(keyPair, CryptographicBuffer.ConvertStringToBinary(encodedData, BinaryStringEncoding.Utf8), null); 

byte[] arr = val.ToArray(); 

string returnValue = System.Text.Encoding.UTF8.GetString(arr, 0, arr.Length); 

나는 현재이 null 이유의 초기화 벡터를 모른다. 그게 옳은지 아직 확실하지는 않습니다. 데스 문자열은 자바 programm에 의해 암호화되어

Cipher c = Cipher.getInstance("DES"); 
Key k = new SecretKeySpec(pass.getBytes(), "DES"); 
c.init(Cipher.ENCRYPT_MODE, k); 

OutputStream cos = new CipherOutputStream(out, c); 
cos.write(bytes); 
cos.close() 

나는 초기화 벡터에 대한 정보를 찾을 수 없습니다.

+1

왜 DES입니까? 56 비트 키가 안전하지 않습니다. – CodesInChaos

+0

당신도 알지만, 여전히 암호화가없는 것보다 낫습니다. 유스 케이스는 실제로 더 높은 암호화를 필요로하지 않으며 DES 암호화는 이미 오래전에 구축되었습니다. –

+0

DES는 아무것도없는 것보다 간신히 좋습니다. DES 키는 이미 15 년 전 24 시간 동안 금이 갔을 수 있습니다. (실제로 누군가가 당신의 시스템이 안전하다고 믿게 만들 수 있기 때문에 아무것도없는 것보다 * 더 나쁠 수 있습니다.) 가능하다면 AES로 변경하십시오. – ntoskrnl

답변

1

방금 ​​문제를 해결했습니다.

String strAsymmetricAlgName = SymmetricAlgorithmNames.DesEcbPkcs7; 
SymmetricKeyAlgorithmProvider objAlgProv = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAsymmetricAlgName); 

CryptographicKey keyPair = objAlgProv.CreateSymmetricKey(CryptographicBuffer.ConvertStringToBinary("key", BinaryStringEncoding.Utf8)); 
IBuffer str = CryptographicBuffer.CreateFromByteArray(encodedDataAsBytes); 
IBuffer buf = CryptographicEngine.Decrypt(keyPair, str, null); 
byte[] arr = buf.ToArray(); 
string returnValue = System.Text.Encoding.UTF8.GetString(arr, 0, arr.Length); 
+0

Windows Phone 8.1 (RT)에서 사용할 포트 코드 솔루션을 찾을 때 유용했습니다. DES 및 TDES를 사용하여 수백만 개의 배포 된 카드가 필요하기 때문에 필요합니다. WP8.0 SL에 Bouncy Castle을 사용했지만이 종속성이 깨졌습니다. 많은 감사합니다. –

+0

@ user925327 - tripleDES를 사용하여 데이터를 암호화 할 수 있었습니까? –