Итак, я создал простую программу шифрования xor, которая запрашивает строку пароля и использует ее для заполнения ISAAC
Затем он запрашивает зашифрованную строку и отправляет ее через ISAAC.
По некоторым причинам это приводит к непоследовательным результатам для тех же двух строк.
Это проблема с моим кодом или вывод на консоль?
Я делаю что-то, чтобы сделать это очевидно очевидным?
Вот мой код, я использую класс шаблона, предоставленный на сайте ISAAC:
#include <iostream>
#include <cstdlib>
using std::malloc;
using std::free;
#include "isaac.hpp"
#include <time.h>
#include <cmath>
#include <string>
#include <sstream>
using namespace std;
QTIsaac<8,int> derp;
char trand(){
int rando=0;
rando=derp.rand();
rando=abs(rando);
rando=rando%256;
char re=rando;
return re;
}
int main()
{
cout << "What is your password string?\n";
string get;
getline(cin,get);
int length=get.size();
int seedWithMe[length];
for(int i=0;i<length;i++){
seedWithMe[i]=(int)get[i];
}
derp.srand(1,1,1,seedWithMe);
cout << "What is your string to be encrypted? \n";
getline(cin,get);
length=get.size();
char table[length];
char table3[length];
for(int i=0;i<length;i++){
table[i]=trand();
}
for(int i=0;i<length;i++){
table3[i]=(char)table[i]^(char)get[i];
}
cout << table3 << "\n";
return 0;
}
Редактировать: неважно, все это только я был глупым
Итак, я попытался исправить то, что дал мне Дэвид Шварц, но потом, когда я попытался
хэшируйте пароль, он снова работает. Функция, которую я использую для
хэш входная строка:
string shaOfPass(string digestThis){
string digest;
CryptoPP::SHA256 hash;
CryptoPP::StringSource foo(digestThis, true,
new CryptoPP::HashFilter(hash,
new CryptoPP::HexEncoder (
new CryptoPP::StringSink(digest))));
return digest;
} And this code results in inconstant output:
cout << "What is your password string?\n";
string get;
getline(cin,get);
string hashOfPass=shaOfPass(get);
int seedWithMe[256];
for(int i=0;i<256;i++){
seedWithMe[i]=(int)get[i%256];
}