6.设计一个加密解密程序。输入一串字符,使用加密算法,对其加密。再设计解密算法,对其解密。

6.设计一个加密解密程序。输入一串字符,使用加密算法,对其加密。再设计解密算法,对其解密。,第1张

#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 "加密后的串:"

  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 "解密后的串:"

  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加密算法流程图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9341921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存