문제

C#에서 문자열을 암호화하고 JavaScript를 사용하여 해독하는 방법을 찾고 있습니다.이 경우 JavaScript는 내부 시스템을 위한 스크립트 언어이므로 해독에 필요한 개인 키/비밀번호에 접근하는 사람들에 대해 걱정할 필요가 없습니다.

온라인에서 솔루션을 검색해 보면 AES 암호화가 효과가 있는 것 같습니다.나는 조사했다 SlowAES 및 RijndaelManaged 솔루션, 그러나 작동시키는 데 운이 없었습니다.

저는 Cheeso가 제공하고 동일한 암호문을 받은 C# 코드를 사용했습니다.그러나 동일한 데이터 조각을 암호화하기 위해 SlowAES를 사용하려고 시도했을 때 완전히 다른 암호를 받았습니다.

var testString = new Array("w", "a", "t", "s", "o", "n", "?");
var test = slowAES.encrypt(testString, slowAES.modeOfOperation.CBC, "12345678901234567890123456789012", slowAES.aes.keySize.SIZE_256, new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
alert(test.cipher);

누군가 나에게 올바른 방향을 알려줄 수 있습니까?나는 결과를 얻을 수만 있다면 방법은 상관하지 않는다.내 목표는 다음과 같은 URL을 사용하는 것입니다.

www.test.com/clientid=123

.NET(C#)을 사용하여 다음과 같이 암호화합니다.

www.test.com/clientid=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

그런 다음 JavaScript를 사용하여 다시 변환합니다.

www.test.com/clientid=123

감사합니다, Itrushn

도움이 되었습니까?

해결책 3

RC4 암호화를 사용하여 내 문제를 해결했습니다. 내 구현에 대한 자세한 정보를 얻을 수 있습니다 블로그.

다른 팁

이진 데이터에서 암호화/암호 해독 작업이 발생합니다. 따라서 C#과 JavaScript 사이의 이진 데이터를 보존해야합니다. 출력을 Base64 또는 16 진수 문자열로 인코딩하는 것이 아마도 가장 좋은 방법 일 것입니다.

옵션 1

유일한 의도가 해결된 문제인 서버와 클라이언트 간의 민감한 데이터를 보호하는 것이라면 SSL을 사용하십시오.

옵션 2

  • URL www.test.com/clientid=123이 주어지면

  • .NET(C#)을 사용하여 암호화하고 다른 위치를 가리킵니다.www.mywebserver.com/forward.aspx?url=asdf;lkjsxd;flkjq934857u9duhfgkjhgalsdkjfh

  • 그런 다음 Forward.aspx 페이지에서 암호를 해독하고 www.test.com/clientid=123으로 리디렉션합니다.

  • 그런 다음 클라이언트는 HTTP 리디렉션 및 prest-o-done을 따릅니다.공유 키가 없고 구현이 쉬우며 제대로 작동합니다.

메모:

원래 솔루션의 경우 COM이나 다른 상호 운용 수단 없이는 안전하게 수행할 수 없습니다.제가 이렇게 말하는 이유는 JScript가 제가 아는 한 불가능한 공개/개인 키 쌍에 액세스해야 하기 때문입니다.공개/개인 키가 없으면 서버는 클라이언트와 대칭 키를 공유해야 합니다.이 키를 안전하게 전송할 수 있는 수단이 없으면 데이터를 보호하지 못하고 난독화만 됩니다.

가장 간단한 접근 방식은 SSL을 사용하고 전달 URL을 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top