2015-06-30 1 views
-8

Я хочу зашифровать строку пароля, введенную пользователем, а затем распечатать ее на экране. Также восстановите исходный пароль, а затем распечатайте его и на экране. Но оператор XOR не работает со строками. Как я могу манипулировать им?Почему мои строки не будут XOR?

#include<iostream> 
#include<string.h> 
using namespace std; 

int main() 
{ 
    string pass; 
    string enc="akdhigfohre"; 
    string x; 


    cout<<"Enter new password: "; 
    cin>>pass; 
    cout<<"\n\nYour New Password is:" << pass<<endl; 

    x=pass^enc; 
    cout<<"\n\nEncrypted Version: "<<x; 

    x=x^enc; 
    cout<<"\n\nRecovred Password: "<<x; 

    system("pause"); 



} 
+0

вы могли шпринтов вашу строку в символы, XOR каждый отдельный символ, а затем объединить их в новую строку – user902383

+0

Спасибо, сэр. Как я могу разделить символы? пожалуйста, сообщите код. –

+0

Просто 'for (char c: pass) {...}' – MSalters

ответ

0

Просто еще попробовать на кодовой базе вопроса,

#include<iostream> 
#include<string.h> 
using namespace std; 

int main() 
{ 
    string pass; 
    string enc="akdhigfohre"; 
    string x = ""; 
    string y = ""; 

    cout<<"Enter new password: "; 
    cin>>pass; 
    cout<<"\n\nYour New Password is:" << pass<<endl; 

    for(size_t i = 0; i < pass.size(); ++i){ 
    x += pass.at(i)^enc.at(i%enc.size()); 
    } 
    cout<<"\n\nEncrypted Version: "<<x; 

    for(size_t i = 0; i < x.size(); ++i){ 
    y += x.at(i)^enc.at(i%enc.size()); 
    } 

    cout<<"\n\nRecovred Password: "<<y; 

    system("pause"); 
} 
0

У меня есть решение, которое может решить вашу проблему. Надеюсь, это будет полезно для вас.

#include <iostream> 

using namespace std; 

#include<iostream> 
using std::string; 

string XOR(string value,string key) 
{ 
    string retval(value); 

    short unsigned int klen=key.length(); 
    short unsigned int vlen=value.length(); 
    short unsigned int k=0; 
    short unsigned int v=0; 

    for(v;v<vlen;v++) 
    { 
     retval[v]=value[v]^key[k]; 
     k=(++k<klen?k:0); 
    } 

    return retval; 
} 

int main() 
{ 
    std::string value("Phuc Nguyen"); 
    std::string key("akdhigfohre"); 

    std::cout<<"Plain text: "<<value<<"\n\n"; 
    value=XOR(value,key); 
    std::cout<<"Cipher text: "<<value<<"\n\n"; 
    value=XOR(value,key); 
    std::cout<<"Decrypted text: "<<value<<std::endl; 

    std::cin.get(); 
    return 0; 
} 

enter image description here

+0

действительно хороший код –

+0

Спасибо David. Пожалуйста, проголосуйте, если вам это нравится. :) –

+0

Я буду в будущем. но теперь у меня есть репутация <15. –

 Смежные вопросы

  • Нет связанных вопросов^_^