그래서 C#을 사용하여 Blowfish를 사용하여 암호화 된 16 진수 바이트로 표현 된 문자열을 해독 할 수 있음을 증명하는 과제가 주어졌습니다. 진수 바이트에C#에서 복어를 사용하여 16 진수 문자열을 해독하는 방법은 무엇입니까?
- 암호화 된 문자열을 표현 :
여기가 무슨.
- 암호화 키를 문자열로 사용합니다.
아마도 나는 조금 순진하지만이 과정은 간단 할 것이라고 생각했습니다.
즉 인터넷에서 Blowfish 구현을 가져온 다음 암호화 키와 암호화 된 텍스트를 간단히 연결하면 문자열을 읽을 수있는 형식으로 출력합니다.
불행히도 이러한 경우는 아닙니다. 지난 몇 시간 동안 저는 두 개의 다른 라이브러리를 시도했지만 BouncyCastle이 가장 인기있는 것으로 보였습니다. 그러나 많은 문서 (다른 질문과 다른 사이트에서 언급)가 없기 때문에이 작업을 수행하는 방법에 대한 단서가 없습니다.
여기에 내가 가진 무엇 : 내가 BouncyCastle와 함께 제공되는 테스트 클래스에서이 적응하기 위해 노력했습니다
using Org.BouncyCastle.Crypto.Engines;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Utilities.Encoders;
using Org.BouncyCastle.Crypto;
public class CryptTest
{
public void Decrypt()
{
var engine = new BlowfishEngine();
var param = new KeyParameter(System.Text.Encoding.ASCII.GetBytes("sdjerwioukjiefdjewiujewiunjeuwer"));
var input = Hex.Decode("db247cceae61fddbcbb62d00281e0446");
BufferedBlockCipher cipher = new BufferedBlockCipher(engine);
cipher.Init(false, param);
byte[] outBytes = new byte[input.Length];
int len1 = cipher.ProcessBytes(input, 0, input.Length, outBytes, 0);
cipher.DoFinal(outBytes, len1);
Console.WriteLine(System.Text.Encoding.ASCII.GetString(outBytes));
}
}
. 누군가 내가하고 싶은 것을하는 좋은 모범의 방향으로 나를 가리킬 수 있습니까?
적어도 내가 겪고있는 문제 중 하나는 키와 관련이 있다고 생각합니다. 16 진수 형식 인 것처럼 보이지 않지만 어떻게해야 할 지 모르겠습니다.
UPDATE : 그것은 내가 원하는 것을 가까이보기 때문에
는 또한 here에서 다른 라이브러리를 시도했습니다.
즉
BlowFish b = new BlowFish(System.Text.Encoding.ASCII.GetBytes("sdjerwioukjiefdjewiujewiunjeuwer"));
var result1 = b.Decrypt_CBC("db247cceae61fddbcbb62d00281e0446");
var result2 = b.Decrypt_ECB("db247cceae61fddbcbb62d00281e0446");
Console.WriteLine(result1 + "\n" + result2);
하지만 여전히지고있어 횡설수설이 돌아왔다.
업데이트 2 :
는 당분간 간단 뭔가가는 종료. Bouncy Castle에 대한 문서가 (명백하게) 부족하기 때문에 암호화의 경험/이해력이 제한적인 사람들은이를 올바르게 사용하기가 매우 어렵습니다. 그러나 앞으로는이 일을 진행하기를 원할 것입니다. 그래서 누군가가 저에게 올바른 방향을 제시 할 수 있다면 여전히 관심이 있습니다.
어떤 문제가 있습니까? – SLaks
기본적으로 문자열의 암호를 해독하지 않으므로 이유를 파악하기 시작해야합니다. –
그래서 ** 어떻게됩니까? 폭발 하는가? – SLaks