我的vigenere cypher算法是否是最佳的? [英] Does my vigenere cypher algorithm is optimal ?
问题描述
最近,我编写了一个算法,用vigenere cypher将一个单词加密到另一个单词,我想知道它是否是最优的。 < blockquote>
这里是代码
< pre lang =c ++> #include < < span class =code-leadattribute> iostream >
#include < string >
#include < vector >
使用 命名空间标准;
char encodeur( char premiereLettre, char deuxiemeLettre)
{
int premiereChiffreLettre;
int deuxiemeChiffreLettre;
int lettreFiniChiffre;
char lettreFini;
int 的区别;
premiereChiffreLettre = int (premiereLettre);
deuxiemeChiffreLettre = int (deuxiemeLettre);
lettreFiniChiffre = premiereChiffreLettre +(deuxiemeChiffreLettre - 97 );
if (lettreFiniChiffre> 122 )
{
差异= lettreFiniChiffre - 123 ;
lettreFiniChiffre = 97 +差异;
}
else
{
}
lettreFini = 炭跨度>(lettreFiniChiffre);
return lettreFini;
}
string encodeurMot(string mot,string motEncodeur)
{
int taille = mot。尺寸();
int tailleMotEncodant = motEncodeur.size();
string motEncoder;
char lettre;
char lettreEncodant;
char lettreEncoder;
vector< char>画面(taille);
for ( int i = 0 ,j = 0 ; i< taille; j ++,i ++)
{
if (j == tailleMotEncodant)
{
j = 0 ;
}
其他
{
}
lettre = mot [i];
lettreEncodant = motEncodeur [j];
lettreEncoder = encodeur(lettre,lettreEncodant);
tableau [i] = lettreEncoder;
motEncoder + = tableau [i];
}
return motEncoder;
}
int main()
{
string mot;
string motEncodeur;
string motEncoder;
int onOff( 1 );
while (onOff == 1 )
{
cout< ;< 您要加密的单词是什么?<< ENDL;
cin>> MOT;
cout<< 谢谢,现在你要用什么词进行加密?<< ENDL;
cin>> motEncodeur;
motEncoder = encodeurMot(mot,motEncodeur);
cout<< motEncoder<< ENDL;
cout<< 你想加密另一个单词吗?(0表示否,1表示是)<< ; ENDL;
cin>>开关;
}
return 0 ;
}
抱歉变量的名字,我是法国人。
我尝试了什么:
i试图让它尽可能最佳。
抱歉变量的名字,我是法国人。
C'est pasunproprolème。
Quote:我想知道它是否是最佳的。
非它不是。
在encodeur中,您不需要将 char
转换为 int
,您可以使用 char
直接。
char encodeur( char premiereLettre, char deuxiemeLettre)
{
int premiereChiffreLettre;
int deuxiemeChiffr eLettre;
int lettreFiniChiffre;
char lettreFini;
int 差异;
char 差异;
premiereChiffreLettre = int (premiereLettre);
deuxiemeChiffreLettre = int (deuxiemeLettre);
lettreFini Chiffre =首映 Chiffre Lettre +(deuxieme Chiffre Lettre - 97 );
如果(lettreFini Chiffre > 122 )
{
差异= lettreFini Chiffre - 123 ;
lettreFini Chiffre = 97 +差异;
}
else
{
}
lettreFini = char (lettreFiniChiffre);
return lettreFini;
}
或
char encodeur( char premiereLettre, char deuxiemeLettre)
{
unsigned char lettreFini;
unsigned char 的区别;
lettreFini = premiereLettre +(deuxiemeLettre - 97 );
if (lettreFini> 122 )
{
差= lettreFini - 123 ;
lettreFini = 97 +差异;
}
return lettreFini;
}
$ b $bVoilàpourquelques简化。
Tu peuxaussiéliminer tableau
ChiffredeVigenère - Wikipédia [ ^ ]
Recently, i wrote an algorithm who encrypt an word into another one with the vigenere cypher and i want to know if it's optimal.
Here it's the code
#include <iostream>
#include <string>
#include <vector>
using namespace std;
char encodeur( char premiereLettre, char deuxiemeLettre)
{
int premiereChiffreLettre;
int deuxiemeChiffreLettre;
int lettreFiniChiffre;
char lettreFini;
int difference;
premiereChiffreLettre = int(premiereLettre);
deuxiemeChiffreLettre = int(deuxiemeLettre);
lettreFiniChiffre = premiereChiffreLettre + (deuxiemeChiffreLettre - 97);
if (lettreFiniChiffre > 122)
{
difference = lettreFiniChiffre - 123;
lettreFiniChiffre = 97 + difference;
}
else
{
}
lettreFini = char(lettreFiniChiffre);
return lettreFini;
}
string encodeurMot(string mot, string motEncodeur)
{
int taille = mot.size();
int tailleMotEncodant = motEncodeur.size();
string motEncoder;
char lettre;
char lettreEncodant;
char lettreEncoder;
vector<char> tableau(taille);
for(int i = 0, j = 0; i < taille;j++, i++)
{
if (j == tailleMotEncodant)
{
j = 0;
}
else
{
}
lettre = mot[i];
lettreEncodant = motEncodeur[j];
lettreEncoder = encodeur(lettre , lettreEncodant);
tableau[i] = lettreEncoder;
motEncoder += tableau[i];
}
return motEncoder;
}
int main()
{
string mot;
string motEncodeur;
string motEncoder;
int onOff(1);
while (onOff == 1)
{
cout << "what's the word you want to encrypt ?" << endl;
cin >> mot;
cout << "Thank you, now what's the word do you want to use for encryption ?" << endl;
cin >> motEncodeur;
motEncoder = encodeurMot(mot, motEncodeur);
cout << motEncoder << endl;
cout << "do you want to encrypt another word ?(0 for no, 1 for yes)" << endl;
cin >> onOff;
}
return 0;
}
sorry for the variables's names, i'm french.
What I have tried:
i have tried to make it as optimal as possible.
Quote:sorry for the variables's names, i'm french.
C'est pas un problème.
Quote:i want to know if it's optimal.
Non it is not.
In encodeur, you don't need to transformchar
toint
, you can usechar
directly.
char encodeur( char premiereLettre, char deuxiemeLettre) {int premiereChiffreLettre;int deuxiemeChiffreLettre;int lettreFiniChiffre;char lettreFini;int difference;char difference;premiereChiffreLettre = int(premiereLettre);deuxiemeChiffreLettre = int(deuxiemeLettre);lettreFiniChiffre= premiereChiffreLettre + (deuxiemeChiffreLettre - 97); if (lettreFiniChiffre> 122) { difference = lettreFiniChiffre- 123; lettreFiniChiffre= 97 + difference; }else{}lettreFini = char(lettreFiniChiffre);return lettreFini; }
or
char encodeur( char premiereLettre, char deuxiemeLettre) { unsigned char lettreFini; unsigned char difference; lettreFini = premiereLettre + (deuxiemeLettre - 97); if (lettreFini > 122) { difference = lettreFini - 123; lettreFini = 97 + difference; } return lettreFini; }
Voilà pour quelques simplifications.
Tu peux aussi éliminertableau
Chiffre de Vigenère — Wikipédia[^]
这篇关于我的vigenere cypher算法是否是最佳的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!