
#include<stdioh>
int main()
{char s[200];
int i;
gets(s);
for(i=0;s[i];i++)
s[i]+=i%5+1;
printf("加密后:\n%s\n",s);
for(i=0;s[i];i++)
s[i]-=i%5+1;
printf("解密后:\n%s\n",s);
return 0;
}
Private Sub Command1_Click()
s = InputBox("请输入要加密的字符串:")
Print "输入的字符串是:"
Print s
For i = 1 To Len(s)
Mid(s, i, 1) = Chr(Asc(Mid(s, i, 1)) + i Mod 5 + 1)
Next i
Print "加密后的串:"
Print s
For i = 1 To Len(s)
Mid(s, i, 1) = Chr(Asc(Mid(s, i, 1)) - i Mod 5 - 1)
Next i
Print "解密后的串:"
Print s
End Sub
常见的数据加密流程包括以下步骤:
Key Generation:生成密钥,这是加密和解密的关键要素。
Data Encryption:使用密钥对数据进行加密,生成密文。
Transmission:在安全的环境中传输加密数据。
Data Decryption:使用相同的密钥对加密数据进行解密,生成明文。
在不同的加密方案中,步骤和细节可能有所不同,但是以上是常见的数据加密流程。常见的加密方案包括对称加密(例如AES),非对称加密(例如RSA)等。
DES(Data Encryption Standard)满足了国家标准局欲达到的4个目的:提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;
DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换(输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第7位),最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。
DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密,如果Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式作为DES的输出结果。在使用DES时,双方预先约定使用的”密码”即Key,然后用Key去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输。
#include <iostream>
using namespace std;
template <class HugeInt>
HugeInt Power( const HugeInt & x, const HugeInt & n, // 求x^n mod p
const HugeInt & p )
{
if( n == 0 )
return 1;
HugeInt tmp = Power( ( x x ) % p, n / 2, p );
if( n % 2 != 0 )
tmp = ( tmp x ) % p;
return tmp;
}
template <class HugeInt>
void fullGcd( const HugeInt & a, const HugeInt & b, //
HugeInt & x, HugeInt & y )
{
HugeInt x1, y1;
if( b == 0 )
{
x = 1;
y = 0;
}
else
{
fullGcd( b, a % b, x1, y1 );
x = y1;
y = x1 - ( a / b ) y1;
}
}
template <class HugeInt>
HugeInt inverse( const HugeInt & p, const HugeInt & q, // 求d
const HugeInt & e )
{
int fyn = ( 1 - p ) ( 1 - q );
HugeInt x, y;
fullGcd( fyn, e, x, y );
return x > 0 x : x + e;
}
int main( )
{
cout << "Please input the plaintext: " << endl;
int m;
cin >> m;
cout << "Please input p,q and e: " << endl;
int p, q, e;
cin >> p >> q >> e;
int n = p q;
int d = inverse( p, q, e );
int C = Power( m, e, n );
cout << "The ciphertext is: " << C << endl;
cout << "\n\nPlease input the ciphertext: " << endl;
cin >> C;
cout << "\n\nPlease input p, q and d: " << endl;
cin >> p >> q >> d;
n = p q;
m = Power( C, d, n );
cout <<"The plaintext is: " << m << endl << endl;
system( "pause" );
return 0;
}
以上就是关于6.设计一个加密解密程序。输入一串字符,使用加密算法,对其加密。再设计解密算法,对其解密。全部的内容,包括:6.设计一个加密解密程序。输入一串字符,使用加密算法,对其加密。再设计解密算法,对其解密。、常见的数据加密流程有哪些、des加密算法流程图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)