crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в криптография
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kilkinenator Дата 18.6.2010, 9:07
 
Цитата(Iron Bug @ 17.6.2010, 22:11) *

интересно. спасибо.
Iron Bug Дата 17.6.2010, 21:11
  http://www.cryptopp.com/
библиотека алгоритмов шифрования.
ViGOur Дата 17.6.2010, 20:04
 
Цитата(inviZ @ 17.6.2010, 19:22) *
"Не могу понять", или все-таки "не хочу разбираться, дайте готовый код"/"не понимаю по-английски" и т.п.
М
inviZ, устное предупреждение!
Мне кажется kilkinenator свои вопросы достаточно подробно и доступно описал!
Здесь на форуме у каждого свой уровень подготовки, уважайте собеседника.
Litkevich Yuriy Дата 17.6.2010, 18:50
  kas, не делай больше таких портянок, справку смотри тут
kas Дата 17.6.2010, 18:25
 
Цитата(kilkinenator @ 17.6.2010, 19:02) *
как я понимаю ключ к configure, можно подробнее? что за ключ?

ключ к configure -openssl
inviZ Дата 17.6.2010, 18:22
 
Цитата(kilkinenator @ 18.6.2010, 0:10) *
а как ее использовать понять не могу.

"Не могу понять", или все-таки "не хочу разбираться, дайте готовый код"/"не понимаю по-английски" и т.п. В чем там могут быть проблемы? У библиотеки достаточно простой интерфейс, все функции описаны в документации. Что еще нужно-то?

Цитата(kilkinenator @ 18.6.2010, 2:02) *
- после такой сборки можно решить описанные задачи?

Нет, это только для SSL-сокетов.
kas Дата 17.6.2010, 18:19
  вот несколько примеров найденные и сети из журнала системный администратор

Генерация ПСП
Раскрывающийся текст
#include <openssl/rand.h>
void main()
{
int outf;
unsigned char buf[1024];
if(RAND_bytes(buf, sizeof(buf))) { /* 1 succes,
0 otherwise */
outf = open("./rnd_bytes", O_CREAT|O_TRUNC|O_RDWR,
0600);
write(outf, buf, sizeof(buf));
} else printf("-ERR: RAND_bytes\n");
}


Вычисление MD5-хэша для файла большого размера
#include <openssl/md5.h>
#define BUFSIZE (1025*16)
void main(int argc, char **argv)
{
MD5_CTX c; /* контекст хэша */
unsigned char buf[BUFSIZE];
unsigned char md_buf[MD5_DIGEST_LENGTH];
/* В командной строке передается имя файла,
для которого вычисляется хэш */
int inf = open(argv[1], O_RDWR);
/* Инициализируем контекст */
MD5_Init(&c);
/* Вычисляем хэш */
for(;;) {
int i = read(inf, buf, BUFSIZE);
if(i <= 0) break;
MD5_Update(&c, buf, (unsigned long)i);
}
/* Помещаем вычисленный хэш в буфер md_buf */
MD5_Final(md_buf, &c);
/* Отображаем результат */
for(i = 0; i < MD5_DIGEST_LENGTH; i++) ↵
printf("%02x", md_buf[i]);
}

Генерация ключей алгоритма RSA
#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>
/* Имена ключевых файлов */
#define PRIVAT "./privat.key"
#define PUBLIC "./public.key"
void main()
{
/* указатель на структуру для хранения ключей */
RSA * rsa = NULL;
unsigned long bits = 2048; /* длина ключа в битах */
FILE *priv_key_file = NULL, *pub_key_file = NULL;
/* контекст алгоритма шифрования */
const EVP_CIPHER *cipher = NULL;
priv_key_file = fopen(PRIVAT, "wb");
pub_key_file = fopen(PUBLIC, "wb");
/* Генерируем ключи */
rsa = RSA_generate_key(bits, RSA_F4, NULL, NULL);
/* Формируем контекст алгоритма шифрования */
OpenSSL_add_all_ciphers();
cipher = EVP_get_cipherbyname("bf-ofb");
/* Получаем из структуры rsa открытый и секретный ключи
* и сохраняем в файлах. Секретный ключ шифруем с помощью
* парольной фразы «hello»
*/
PEM_write_RSAPrivateKey(priv_key_file, rsa, cipher, ↵
NULL, 0, NULL, "hello");
PEM_write_RSAPublicKey(pub_key_file, rsa);
/* Освобождаем память, выделенную под структуру rsa */
RSA_free(rsa);
}

Шифрование данных по алгоритму RSA
#include <openssl/rsa.h>
#include <openssl/pem.h>
void main(int argc, char **argv)
{
/* структура для хранения открытого ключа */
RSA * pubKey = NULL;
unsigned char *ptext, *ctext;
FILE * pub_key_file = NULL;
/* Открываем входной и создаем выходной файлы */
int inf = open(argv[1], O_RDWR);
int outf = open("./rsa.file", ↵
O_CREAT|O_TRUNC|O_RDWR, 0600);
/* Считываем открытый ключ */
pub_key_file = fopen(PUBLIC, "rb");
pubKey = PEM_read_RSAPublicKey(pub_key_file, NULL, ↵
NULL, NULL);
/* Определяем длину ключа */
int key_size = RSA_size(pubKey);
ptext = malloc(key_size);
ctext = malloc(key_size);
/* Шифруем содержимое входного файла */
while(1) {
inlen = read(inf, ptext, key_size - 11);
if(inlen <= 0) break;
outlen = RSA_public_encrypt(inlen, ptext, ctext, ↵
pubKey, RSA_PKCS1_PADDING);
if(outlen != RSA_size(pubKey)) exit(-1);
write(outf, ctext, outlen);
}
}


Дешифрование файла, зашифрованного
по RSA-алгоритму
#include <openssl/rsa.h>
#include <openssl/pem.h>
void main(int argc, char **argv)
{
RSA *privKey = NULL;
FILE *priv_key_file;
unsigned char *ptext, *ctext;
/* Открываем входной и создаем выходной файл */
inf = open(argv[1], O_RDWR);
outf = open("./test.rsa", ↵
O_CREAT|O_TRUNC|O_RDWR, 0600);
/* Открываем ключевой файл и считываем секретный ключ */
priv_key_file = fopen(PRIVAT, "rb");
privKey = PEM_read_RSAPrivateKey(priv_key_file, ↵
NULL, NULL, NULL);
/* Определяем размер ключа */
key_size = RSA_size(privKey);
ctext = malloc(key_size);
ptext = malloc(key_size);
/* Дешифруем файл */
while(1) {
inlen = read(inf, ctext, key_size);
if(inlen <= 0) break;
outlen = RSA_private_decrypt(inlen, ctext, ptext, ↵
privKey, RSA_PKCS1_PADDING);
if(outlen < 0) exit(0);
write(outf, ptext, outlen);
}
}


для их использования, естественно, Qt пересобирать не надо
kilkinenator Дата 17.6.2010, 18:02
 
Цитата(kas @ 17.6.2010, 18:18) *
а, вообще, что именно тебе нужно сделать при помощи openSSL?

в моем посте было написано. еще раз: генерировать ключ RSA. шифровать методом RC5. считать хэш MD5, может еще чтото, но пока что это.

Цитата(kas @ 17.6.2010, 18:18) *
в Qt есть QSslSocket, который использует openSSL. только Qt должна быть собрана с соответствующим ключом


- как я понимаю ключ к configure, можно подробнее? что за ключ?
- после такой сборки можно решить описанные задачи?

kas Дата 17.6.2010, 17:18
 
Цитата(kilkinenator @ 17.6.2010, 17:10) *
итак, появилась у меня необходимость генерировать RSA ключи, и шифровать при помощи RSA и RC5, а также считать хэши MD5. из криптографических библиотек я знаю только openSSL, точнее сказать - слышал про openSSL, а как ее использовать понять не могу.

а вопросы у меня следующие:
- какую библиотеку целесообразнее всего использовать в моих целях, может чтото отличное от openSSL?
- как эту библиотеку использовать в QT проекте?
- ну и конечно же, где найти пару примеров ее использования?


в Qt есть QSslSocket, который использует openSSL. только Qt должна быть собрана с соответствующим ключом.
а, вообще, что именно тебе нужно сделать при помощи openSSL?
kilkinenator Дата 17.6.2010, 16:10
  итак, появилась у меня необходимость генерировать RSA ключи, и шифровать при помощи RSA и RC5, а также считать хэши MD5. из криптографических библиотек я знаю только openSSL, точнее сказать - слышал про openSSL, а как ее использовать понять не могу.

а вопросы у меня следующие:
- какую библиотеку целесообразнее всего использовать в моих целях, может чтото отличное от openSSL?
- как эту библиотеку использовать в QT проекте?
- ну и конечно же, где найти пару примеров ее использования?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 4:47