Привет всем.
Пытаюсь реализовать шифрование по блоуфиш, почему то выходит так, что сообщение зашифрованое открытым ключем этим же ключем и расшифровывется, а при попытке расшифровать закрытым, выходит какая-то чепуха.
Вот код, ткните пожалуйста где ошибка.#include <stdio.h>
#include <stdint.h>
#include <openssl/blowfish.h>
#include <malloc.h>
#include <string.h>
#include <assert.h>
char pub_key[]="\
mQGiBEYHuaURBAD3XoitIiZhTAv/cKDixamR0hbNJNH0vGheaz+luQ1MHqsqquLC\
has4ksEkBeRYjOoVdp9KlsUgFhBcjS+7UyITugluGgYILdEYNJncNtxdGRRENBaR\
nbg0gBmqw+AvFt88hlwJRRCOscXLDLeK5rS9nmr7w63hKLyir8UWR5knQwCgkVYs\
GbS2DqBjlFDGtLQfU1e84zED/1beakFfmlfbrOsQ83d96Xr9sCcTCt6J0lqSWcj2\
3xv0VldW0DPtC7JlGdRH2sf4thXpDiT4QnMzk7p0dO1ovdKY8kPgenRpn9Qpg+FI\
4lk4Z6H7mtL6/TLCHNa97e0nef3wDRcjUF/oW1Vb48EXv3h2CnRR0d0a8PqtzvK8\
DWHIBACXiWIfLY2XkFSfsZv6Y/qyjsxhWB9r2ZYq2h8rvU7BSZERCDBKUJ9s45y5\
Whc2hAgy9kEcqHclywY6N8k10PhdTLhZisss9JRBB7dNjAY6DFv6Rf0ziIW44N6k\
p4DxKKpbFbBZ1ARBgV33j0qvGBqha92zms2HPPk8S7/cV90z2bQXdGVzdGtleTEg\
KHRlc3QpIDxhQGIuYz6IXgQTEQIAHgUCRge5pQIbAwYLCQgHAwIDFQIDAxYCAQIe\
AQIXgAAKCRAO0BmZrRwiEnRPAJ9bi1o78bPKf0vkeEBTu+Y3jKrCGQCeMBqUY9ln\
tCDFZMDVYgVM4Ween7y5AQ0ERge5phAEAL0JFZF1mUVUgkhRPdDogogRmC01u5nZ\
h90PS/vlY1jG7nvRWoABmrXrqBCSodNE2VctnTzWArKaGJCskz3Mnq95cgWEFFYN\
EYbug2Qc//0hMA/q4IWmHbFUvfLSanhUqnsw0w9UaAcI5DqMHahIqexfkZmcztHw\
tfjrCEWM+U6bAAMFA/9+tFzUmdqbcxsJRVPnYy+4JM6dvPh0z4vbYrpmDM2i+81f\
ldS0nvbfThcgoCzf5aY+e38QLO29MlqiAkQikzg3LdR088z4FXN5NZ1t5F8GExLd\
J6UbUaOa6scII0xK83xisjt4/QHGFgZgVd/LGTCj7w9eqt31O7M8OT4gbI8wxYhJ\
BBgRAgAJBQJGB7mmAhsMAAoJEA7QGZmtHCISIwAAnj21kAbb+T1njw92qdJwI51Z\
Y+YoAJwPj9/7zoEZon1pD5BL4ZiBF5QF1A==\
=8iRp";
char sub_key[]="\
lQHhBEYHuaURBAD3XoitIiZhTAv/cKDixamR0hbNJNH0vGheaz+luQ1MHqsqquLC\
has4ksEkBeRYjOoVdp9KlsUgFhBcjS+7UyITugluGgYILdEYNJncNtxdGRRENBaR\
nbg0gBmqw+AvFt88hlwJRRCOscXLDLeK5rS9nmr7w63hKLyir8UWR5knQwCgkVYs\
GbS2DqBjlFDGtLQfU1e84zED/1beakFfmlfbrOsQ83d96Xr9sCcTCt6J0lqSWcj2\
3xv0VldW0DPtC7JlGdRH2sf4thXpDiT4QnMzk7p0dO1ovdKY8kPgenRpn9Qpg+FI\
4lk4Z6H7mtL6/TLCHNa97e0nef3wDRcjUF/oW1Vb48EXv3h2CnRR0d0a8PqtzvK8\
DWHIBACXiWIfLY2XkFSfsZv6Y/qyjsxhWB9r2ZYq2h8rvU7BSZERCDBKUJ9s45y5\
Whc2hAgy9kEcqHclywY6N8k10PhdTLhZisss9JRBB7dNjAY6DFv6Rf0ziIW44N6k\
p4DxKKpbFbBZ1ARBgV33j0qvGBqha92zms2HPPk8S7/cV90z2f4DAwLi5IetkbPi\
a2CKa+ZnwYdCq9K9QuzntazMrH+Du7ecl6h88szqmBVcgnc/wsWkseelzClrK/s1\
lx9qbLQXdGVzdGtleTEgKHRlc3QpIDxhQGIuYz6IXgQTEQIAHgUCRge5pQIbAwYL\
CQgHAwIDFQIDAxYCAQIeAQIXgAAKCRAO0BmZrRwiEnRPAJ947mrXWAVFaoFGi+NA\
QvPlD8dkTgCfZekzqZBIBJ5tVxN244tapnfSBdudAVgERge5phAEAL0JFZF1mUVU\
gkhRPdDogogRmC01u5nZh90PS/vlY1jG7nvRWoABmrXrqBCSodNE2VctnTzWArKa\
GJCskz3Mnq95cgWEFFYNEYbug2Qc//0hMA/q4IWmHbFUvfLSanhUqnsw0w9UaAcI\
5DqMHahIqexfkZmcztHwtfjrCEWM+U6bAAMFA/9+tFzUmdqbcxsJRVPnYy+4JM6d\
vPh0z4vbYrpmDM2i+81fldS0nvbfThcgoCzf5aY+e38QLO29MlqiAkQikzg3LdR0\
88z4FXN5NZ1t5F8GExLdJ6UbUaOa6scII0xK83xisjt4/QHGFgZgVd/LGTCj7w9e\
qt31O7M8OT4gbI8wxf4DAwLi5IetkbPia2CDrxW8BtK2jFoabcTlvoD7SrfAkluO\
8FQtJa0FEZDvZnj4z/wjAIEM8RmjTyaoyEaWOtOLVdDnZeZSv295sohJBBgRAgAJ\
BQJGB7mmAhsMAAoJEA7QGZmtHCISIwAAnilYoDrupHc+Z8lZ6GkSrMUVPFubAJ9x\
1VMpJDu7mRf++SSr8BIESL6ssA==\
=3XZK";
static void
openssl_bf_encrypt(void *ctx, unsigned length,
uint8_t *dst, const uint8_t *src)
{
assert (!(length % BF_BLOCK));
while (length)
{
BF_ecb_encrypt(src, dst, ctx, BF_ENCRYPT);
length -= BF_BLOCK;
dst += BF_BLOCK;
src += BF_BLOCK;
}
}
static void
openssl_bf_decrypt(void *ctx, unsigned length,
uint8_t *dst, const uint8_t *src)
{
assert (!(length % BF_BLOCK));
while (length)
{
BF_ecb_encrypt(src, dst, ctx, BF_DECRYPT);
length -= BF_BLOCK;
dst += BF_BLOCK;
src += BF_BLOCK;
}
}
int
main(int argc, char *argv[])
{
char in[] = "just a test message ";
char out[1024];
BF_KEY bf_pubkey;
BF_KEY bf_subkey;
memset((void*)out, 0, 1024);
BF_set_key(&bf_pubkey, strlen(pub_key), pub_key);
BF_set_key(&bf_subkey, strlen(sub_key), sub_key);
openssl_bf_encrypt(&bf_pubkey, strlen(in), out, in);
printf("Crypted:\n%s\n", out);
openssl_bf_decrypt(&bf_subkey, strlen(out), in, out);
printf("Decrypted:\n%s\n", in);
return 0;
}