Pergunta
Programa Minha C ++ está usando um baiacu padrão.
O meu programa C # está usando o algoritmo de criptografia Blowfish de aqui .
Os dois aplicativos (clientes TCP) fazer a mesma coisa: receber um pacote, criptografá-lo e enviá-lo de volta. Se o servidor reconhece o pacote como normal - ele envia outro pacote, caso contrário, ele fecha o soquete. Segui todas as funções em C ++ e C # e tudo é o mesmo, exceto a criptografia.
No arquivo C ++ Eu tenho apenas uma criptografia. No entanto, no C # Blowfish Tenho
- BlowfishCBC
- BlowfishCFB
- BlowfishECB
- BlowfishSimple
Eu não sei qual é o único no meu projeto C ++, assim que eu escolhi aleatoriamente BlowfishECB
. Mas ele não funciona, o servidor (que eu não tenho acesso a ele) não reconhece o pacote como criptografada.
A minha pergunta: Existe um padrão Blowfish para C # ou se este é o único, como posso resolver esse problema? EDIT:
O código C ++ blowfish pode ser visto aqui .
Solução
Não, não é um baiacu padrão para C #. Ele usará o que você diga a ele. (Edit: Eu acho que eu entendi mal Se você quiser um baiacu compatível com padrões para C #, eu recomendaria Bouncy Castle Crypto É um porto de Java e contém padrões RFC mais documentados Dê uma olhada nos testes de unidade para exemplos de como... usar as classes. Sempre que eu usei-o durar a documentação estava faltando, mas os testes de unidade são muito bons exemplos de como as coisas se encaixam.)
A pergunta que você quer perguntar é qual sabor do Blowfish seu aplicativo C ++ está usando. Qual biblioteca você está usando no aplicativo do C ++ para fazer a sua criptografia? Uma vez que você sabe disso, então você pode fazer a escolha correta em sua aplicação C #.
Eu, pessoalmente encontrar CBC o mais. "Simples" seria provavelmente vale a pena tentar.
Você também terá que lidar com coisas como ter certeza que seu vector de inicialização corresponda-se dependendo de qual você usa.