DES加密解密算法C++实现
DES加密算法并不难,是由一些简单的变换得来的,难的是要有足够的耐心。蒟蒻并不想说自己用了多久才把代码写好的。
代码:
我真的太难了QAQ
- #include<iostream>
- using namespace std;
- int jiami(){
- // 明文
- int mingwen[];
- cout<<"请输入16位十六进制的明文:";
- string kk;
- cin>>kk;
- int len=kk.length();
- while(len!=){
- cout<<"请重新输入16位十六进制的明文:";
- cin>>kk;
- len=kk.length();
- }
- int jishu=;
- for(int i=;i<;i++){
- int a;
- if(kk[i]>=''&&kk[i]<='')
- a=kk[i]-'';
- else
- a=kk[i]-'A'+;
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- mingwen[jishu*]=n[];
- mingwen[jishu*+]=n[];
- mingwen[jishu*+]=n[];
- mingwen[jishu*+]=n[];
- jishu++;
- }
- //初始置换IP
- int IP[]={, , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , };
- // 选择运算E 32位明文扩充为48位
- int E[]={ , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , };
- //64位秘钥 0123456789ABCDEF 56位的秘钥+8位校验码
- int miyao[];
- cout<<"请输入16位十六进制的秘钥:";
- string k_2;
- cin>>k_2;
- int len_2=k_2.length();
- while(len_2!=){
- cout<<"请重新输入16位十六进制的秘钥:";
- cin>>k_2;
- len_2=k_2.length();
- }
- int jishu_2=;
- for(int i=;i<;i++){
- int a;
- if(k_2[i]>=''&&k_2[i]<='')
- a=k_2[i]-'';
- else
- a=k_2[i]-'A'+;
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- miyao[jishu_2*]=n[];
- miyao[jishu_2*+]=n[];
- miyao[jishu_2*+]=n[];
- miyao[jishu_2*+]=n[];
- jishu_2++;
- }
- //置换选择1
- int IP_1[]={, , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , };
- //16次左移对应的位数
- int weiyi[]={,,,,,,,,,,,,,,,};
- // 置换选择2 秘钥56->48位压缩
- int IP_2[]={, , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , };
- //S盒
- int s[][]=
- {
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- }
- };
- //P置换
- int P[]={, , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , };
- //1初始置换
- //1.1 64明文进行初始置换分左右
- int mingwen_1[];
- int l[],r[];
- for (int i=;i<;i++){
- mingwen_1[i]=mingwen[IP[i]-];
- }
- for(int i=;i<;i++){
- l[i]=mingwen_1[i];
- r[i]=mingwen_1[i+];
- }
- cout<<"明文初始置换M =";
- for(int i=;i<;i++){
- if(i%==) cout<<" ";
- cout<<mingwen_1[i];
- }
- cout<<endl;
- //1.2 56位秘钥初始置换分左右
- cout<<"秘钥初始置换k0 =";
- for(int i=;i<;i++){
- if(i%==) cout<<" ";
- cout<<miyao[i];
- }
- cout<<endl;
- int ml[],mr[];
- int miyao_0[];
- for(int i=;i<;i++){
- miyao_0[i]=miyao[IP_1[i]-];
- }
- for(int i=;i<;i++){
- ml[i]=miyao_0[i];
- mr[i]=miyao_0[i+];
- }
- //2.循环加密
- for (int i=;i<;i++){
- cout<<"-------------------------------第"<<i+<<"轮循环-----------------------------------" <<endl;
- //2.1明文左右交换
- int new_l[],new_r[];
- for(int j=;j<;j++){
- new_l[j]=r[j];
- }
- //2.2 右边32位拓展变换成48位
- for(int j=;j<;j++){
- new_r[j]=r[E[j]-];
- }
- //2.3 左右秘钥 左移
- int new_ml[],new_mr[];
- for(int j=;j<;j++){
- new_ml[j]=ml[(j++weiyi[i])%];
- new_mr[j]=mr[(j++weiyi[i])%];
- }
- //2.4 重新合并成56位的秘钥
- int miyao_1[];
- for(int j=;j<;j++){
- miyao_1[j]=new_ml[j];
- miyao_1[j+]=new_mr[j];
- }
- //2.5 IP_2 56位秘钥压缩成48位的秘钥
- int k[];
- for (int j=;j<;j++){
- k[j]=miyao_1[IP_2[j]-];
- }
- cout<<"k"<<i+<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<k[j];
- }
- cout<<endl;
- cout<<"R"<<i<<" "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r[j];
- }
- cout<<endl;
- //2.6 2.2和2.5XOR
- int new_r2[];
- for(int j=;j<;j++){
- new_r2[j]=new_r[j] ^ k[j];
- }
- cout<<"R(i-1)^ki "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r2[j];
- }
- cout<<endl;
- //2.7 s盒
- int new_r3[];
- int b1,b2,b3,b4,b5,b6;
- int m=;
- for(int j=;j<;j++){
- int row = ((new_r2[j*])<<)+(new_r2[j*+]); //第1,6位组成行号
- int col = ((new_r2[j*+])<<)+((new_r2[j*+])<<)+((new_r2[j*+])<<)+(new_r2[j*+]); //第2,3,4,5位组成列号
- //找到s盒对应的数
- int a=s[j][*row+col];
- //转成对应的2进制
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- new_r3[m*]=n[];
- new_r3[m*+]=n[];
- new_r3[m*+]=n[];
- new_r3[m*+]=n[];
- m++;
- }
- cout<<"第"<<i+<<"轮s盒"<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r3[j];
- }
- cout<<endl;
- //2.8 P置换
- int new_r4[];
- for(int j=;j<;j++){
- new_r4[j]=new_r3[P[j]-];
- }
- cout<<"P置换 "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r4[j];
- }
- cout<<endl;
- //2.9 明文左边32位和2.8 new_r4[32] XOR
- int new_r5[];
- for(int j=;j<;j++){
- new_r5[j]=l[j] ^ new_r4[j];
- //更新左右明文,以便于下次循环
- l[j]=new_l[j];
- r[j]=new_r5[j];
- }
- cout<<"R"<<i+<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r5[j];
- }
- cout<<endl;
- cout<<"L"<<i+<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l[j];
- }
- cout<<endl;
- //2.10 更新左右秘钥,以便于下次循环
- for(int j=;j<;j++){
- ml[j]=new_ml[j];
- mr[j]=new_mr[j];
- }
- cout<<"----------------------------------------------------------------------------"<<endl<<endl<<endl;
- }
- //3. 循环加密之后的明文mingwen_1[64]
- for(int i=;i<;i++){
- mingwen_1[i]=r[i];
- mingwen_1[i+]=l[i];
- }
- // cout<<"逆置换前=";
- // for(int i=0;i<64;i++){
- // cout<<mingwen_1[i];
- // }
- // cout<<endl<<endl;
- //4. 逆置换
- int miwen[];
- for(int i=;i<;i++){
- miwen[IP[i]-]=mingwen_1[i];
- }
- //5.输出
- cout<<"原明文为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<mingwen[i];
- }
- cout<<endl<<endl;
- cout<<"秘钥为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<miyao[i];
- }
- cout<<endl<<endl;
- cout<<"密文为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<miwen[i];
- }
- //是否将密文转换成十六进制?(Y or N)
- cout<<endl<<endl<<"是否将密文转换成十六进制?(Y or N):";
- char YN;
- cin>>YN;
- cout<<endl<<"十六进制密文表示:";
- if(YN=='Y'){
- for(int i=;i<;i++){
- int q=miwen[i*]*+miwen[i*+]*+miwen[i*+]*+miwen[i*+];
- if(q>= && q<= ){
- cout<<q;
- }
- else{
- cout<<hex<<uppercase<<q;
- }
- }
- }
- cout<<endl<<endl<<"!!!!皆大欢喜,普天同庆!!!!"<<endl;
- return ;
- }
- int jiemi(){
- // 密文
- int miwen[];
- cout<<"请输入16位十六进制的密文:";
- string kk;
- cin>>kk;
- int len=kk.length();
- while(len!=){
- cout<<"请重新输入16位十六进制的密文:";
- cin>>kk;
- len=kk.length();
- }
- int jishu=;
- for(int i=;i<;i++){
- int a;
- if(kk[i]>=''&&kk[i]<='')
- a=kk[i]-'';
- else
- a=kk[i]-'A'+;
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- miwen[jishu*]=n[];
- miwen[jishu*+]=n[];
- miwen[jishu*+]=n[];
- miwen[jishu*+]=n[];
- jishu++;
- }
- //初始置换IP
- int IP[]={, , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , };
- // 选择运算E 32位明文扩充为48位
- int E[]={ , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , };
- //64位秘钥 0123456789ABCDEF 56位的秘钥+8位校验码
- int miyao[];
- cout<<"请输入16位十六进制的秘钥:";
- string k_2;
- cin>>k_2;
- int len_2=k_2.length();
- while(len_2!=){
- cout<<"请重新输入16位十六进制的秘钥:";
- cin>>k_2;
- len_2=k_2.length();
- }
- int jishu_2=;
- for(int i=;i<;i++){
- int a;
- if(k_2[i]>=''&&k_2[i]<='')
- a=k_2[i]-'';
- else
- a=k_2[i]-'A'+;
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- miyao[jishu_2*]=n[];
- miyao[jishu_2*+]=n[];
- miyao[jishu_2*+]=n[];
- miyao[jishu_2*+]=n[];
- jishu_2++;
- }
- //置换选择1
- int IP_1[]={, , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , ,
- , , , , , , };
- //16次左移对应的位数
- int weiyi[]={,,,,,,,,,,,,,,,};
- // 置换选择2 秘钥56->48位压缩
- int IP_2[]={, , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , ,
- , , , , , };
- //S盒
- int s[][]=
- {
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- },
- {
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,,
- ,,,,,,,,,,,,,,,
- }
- };
- //P置换
- int P[]={, , , , , , , ,
- , , , , , , , ,
- , , , , , , , ,
- , , , , , , , };
- //1初始置换
- //1.1 64密文进行逆置换分左右
- int miwen_1[];
- int l[],r[];
- for (int i=;i<;i++){
- miwen_1[i]=miwen[IP[i]-];
- }
- for(int i=;i<;i++){
- r[i]=miwen_1[i];
- l[i]=miwen_1[i+];
- }
- cout<<"密文逆置换 =";
- for(int i=;i<;i++){
- if(i%==) cout<<" ";
- cout<<miwen_1[i];
- }
- cout<<endl;
- //1.2 56位秘钥初始置换分左右
- cout<<"秘钥初始置换k0 =";
- for(int i=;i<;i++){
- if(i%==) cout<<" ";
- cout<<miyao[i];
- }
- cout<<endl;
- int ml_0[],mr_0[];
- int miyao_0[];
- for(int i=;i<;i++){
- miyao_0[i]=miyao[IP_1[i]-];
- }
- for(int i=;i<;i++){
- ml_0[i]=miyao_0[i];
- mr_0[i]=miyao_0[i+];
- }
- // 因为加密过程一共左移了28位,回到了原来的位置,
- //所以我们要先将原始秘钥左移一次。
- int ml[],mr[];
- for(int j=;j<;j++){
- ml[j]=ml_0[(j++)%];
- mr[j]=mr_0[(j++)%];
- }
- //2.循环解密
- for (int i=;i<;i++){
- cout<<"-------------------------------第"<<i+<<"轮循环解密-----------------------------------" <<endl;
- //2.1密文左右交换
- int new_l[],new_r[];
- for(int j=;j<;j++){
- new_r[j]=l[j];
- }
- //2.2 左边32位拓展变换成48位
- for(int j=;j<;j++){
- new_l[j]=new_r[E[j]-];
- }
- //2.3 左右秘钥 右移
- int new_ml[],new_mr[];
- for(int j=;j<;j++){
- new_ml[j]=ml[(j+-weiyi[-i])%];
- new_mr[j]=mr[(j+-weiyi[-i])%];
- }
- //2.4 重新合并成56位的秘钥
- int miyao_1[];
- for(int j=;j<;j++){
- miyao_1[j]=new_ml[j];
- miyao_1[j+]=new_mr[j];
- }
- //2.5 IP_2 56位秘钥压缩成48位的秘钥
- int k[];
- for (int j=;j<;j++){
- k[j]=miyao_1[IP_2[j]-];
- }
- cout<<"k"<<-i<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<k[j];
- }
- cout<<endl;
- cout<<"L"<<-i<<" "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l[j];
- }
- cout<<endl;
- //2.6 2.2和2.5XOR
- int new_l2[];
- for(int j=;j<;j++){
- new_l2[j]=new_l[j] ^ k[j];
- }
- cout<<"Li^ki "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l2[j];
- }
- cout<<endl;
- //2.7 s盒
- int new_l3[];
- int b1,b2,b3,b4,b5,b6;
- int m=;
- for(int j=;j<;j++){
- int row = ((new_l2[j*])<<)+(new_l2[j*+]); //第1,6位组成行号
- int col = ((new_l2[j*+])<<)+((new_l2[j*+])<<)+((new_l2[j*+])<<)+(new_l2[j*+]); //第2,3,4,5位组成列号
- //找到s盒对应的数
- int a=s[j][*row+col];
- //转成对应的2进制
- int n[]={};
- int f=;
- while(a){
- n[f]=a%;
- a=a/;
- f++;
- }
- new_l3[m*]=n[];
- new_l3[m*+]=n[];
- new_l3[m*+]=n[];
- new_l3[m*+]=n[];
- m++;
- }
- cout<<"第"<<-i<<"轮s盒"<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l3[j];
- }
- cout<<endl;
- //2.8 P置换
- int new_l4[];
- for(int j=;j<;j++){
- new_l4[j]=new_l3[P[j]-];
- }
- cout<<"P置换 "<<"=";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l4[j];
- }
- cout<<endl;
- //2.9 密文右边32位和2.8 new_l4[32] XOR
- int new_l5[];
- for(int j=;j<;j++){
- new_l5[j]=r[j] ^ new_l4[j];
- //更新左右明文,以便于下次循环
- r[j]=new_r[j];
- l[j]=new_l5[j];
- }
- cout<<"L"<<-i-<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_l5[j];
- }
- cout<<endl;
- cout<<"R"<<-i-<<" =";
- for(int j=;j<;j++){
- if(j%==) cout<<" ";
- cout<<new_r[j];
- }
- cout<<endl;
- //2.10 更新左右秘钥,以便于下次循环
- for(int j=;j<;j++){
- ml[j]=new_ml[j];
- mr[j]=new_mr[j];
- }
- cout<<"ml"<<-i<<"=";
- for(int j=;j<;j++){
- cout<<ml[j];
- }
- cout<<endl;
- cout<<"mr"<<-i<<"=";
- for(int j=;j<;j++){
- cout<<mr[j];
- }
- cout<<endl;
- cout<<"------------------------------------------------------------------------------"<<endl<<endl<<endl;
- }
- //3. 循环解密之后的密文miwen_1[64]
- for(int i=;i<;i++){
- miwen_1[i]=l[i];
- miwen_1[i+]=r[i];
- }
- //4. 初始置换
- int mingwen[];
- for(int i=;i<;i++){
- mingwen[IP[i]-]=miwen_1[i];
- }
- //5.输出
- cout<<"原密文为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<miwen[i];
- }
- cout<<endl<<endl;
- cout<<"秘钥为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<miyao[i];
- }
- cout<<endl<<endl;
- cout<<"明文为:";
- for(int i=;i<;i++){
- if(i%==) cout<<endl;
- cout<<mingwen[i];
- }
- //是否将明文转换成十六进制?(Y or N)
- cout<<endl<<endl<<"是否将明文转换成十六进制?(Y or N):";
- char YN;
- cin>>YN;
- cout<<endl<<"十六进制明表示:";
- if(YN=='Y'){
- for(int i=;i<;i++){
- int q=mingwen[i*]*+mingwen[i*+]*+mingwen[i*+]*+mingwen[i*+];
- if(q>= && q<= ){
- cout<<q;
- }
- else{
- cout<<hex<<uppercase<<q;
- }
- }
- }
- cout<<endl<<endl<<"!!!!皆大欢喜,普天同庆!!!!"<<endl;
- return ;
- }
- int main(){
- while(){
- int number;
- cout<<"===欢迎来到DES加密算法系统==="<<endl;
- cout<<" Author:十七"<<endl;
- cout<<"目前支持的操作有:"<<endl;
- cout<<" 1.加密操作;"<<endl;
- cout<<" 2.解密操作;"<<endl;
- cout<<" 0.退出。"<<endl;
- cout<<"============================="<<endl;
- cout<<"请选择您项进行的操作:";
- cin>>number;
- cout<<endl;
- if(number==){
- jiami();
- }
- else if(number==){
- jiemi();
- }
- else{
- cout<<"您已成功退出系统,如果您对本次服务感到满意,欢迎五星好评^_^"<<endl;
- return ;
- }
- }
- return ;
- }
运行结果截图:
......
......
DES加密解密算法C++实现的更多相关文章
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- DES加密解密算法C语言代码实现
代码: #include<stdio.h> #include<string.h> #include<stdlib.h> /*-------------------- ...
- Des加密解密算法java实现
package tech.fullink.eaglehorn.utils; import javax.crypto.Cipher; import javax.crypto.SecretKey; imp ...
- C#和PHP加密结果一致的DES加密解密算法。php实现和c#一致的DES加密解密
DES加密算法 des对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密 ...
- android -------- DES加密解密算法
DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信 ...
- C#MD5加密和DES加密解密算法
public partial class stringTest : System.Web.UI.Page { protected void Page_Load(object s ...
- DES对 json 、http参数加密解密算法
网上众多大神们的众多方式实现加解密操作及保障数据安全性.今天无意中发现一篇以 DES加密解密算法.摘抄如下 工具类: import java.security.SecureRandom; import ...
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...
- des加密解密——java加密,php解密
最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...
随机推荐
- coding++:SpringBoot-事务注解详解
@Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:ann ...
- C++中的各种进制转换函数汇总
C++中的各种进制转换函数汇总 1.在C中,按指定进制格式输出如下: #include <iostream> #include <cstdio> using namespace ...
- Promise入门详解
异步调用 异步 JavaScript的执行环境是单线程. 所谓单线程,是指JS引擎中负责解释和执行JavaScript代码的线程只有一个,也就是一次只能完成一项任务,这个任务执行完后才能执行下一个,它 ...
- 最大子矩阵hdu1559(二维前缀和)
最大子矩阵hdu1559 Problem Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大. Input 输入数据的第一行为一个正整数T,表示有 ...
- Vertica的这些事(四)——-vertica加密数据
通过创建 Secure Access Policies可以对vertica中的某一列数据进行加密: CREATE ACCESS POLICY ON [schema][tablename] FOR CO ...
- java中eclipse的安装和JDK的环境变量的配置以及记事本的使用
2020-04-09 23:26:15 学习java的第一步当然就是环境配置了,java中的配置作为小白刚刚开始肯定会有点一点晕头转向的,开没等开始入门呢!就要准备放弃了.哈哈哈哈,没关系的,都是这么 ...
- springboot项目下的Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
今天遇到mybatis-puls的报错Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (n ...
- C#通用类库整理--日志记录
日志的记录是将程序过程中的一些行为数据记录下来,方便开发.运维迅速的找到问题的所在,节省时间.使用时在 站点的web.config 中的<appSettings></appSetti ...
- C++不被继承的内容
C++不被继承的内容 派生类会继承基类所有的方法和变量,除了: 构造函数,析构函数 重载运算符 友元函数 注意,私有成员是被继承了的,只是无法访问.我们可以通过sizeof判断出来.下面附一张清晰的图
- Shell:Day05.笔记
交互输入与for语句 1.交互输入 read Python中用input()函数,进行输入: read命令同时可以定义多个变量值:而输入的内容默认以空格为分隔符,将值输入到对应的变量中: 如果默认 ...