字符串加解密

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

题目描述

1、对输入的字符串进行加解密,并输出。

2加密方法为:

当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a

当内容是数字时则把该数字加1,如0替换11替换29替换0

其他字符不做变化。

3、解密方法为加密的逆过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef _ENCRYPTUNENCRYPT_
#define _ENCRYPTUNENCRYPT_
/*================================ Macros ===================================*/
 
 
#define FALSE 0
#define TURE 1
 
 
/*============================= Include Function ===============================*/
 
int  Encrypt ( char  aucPassword[],  char  aucResult[]);
int  unEncrypt ( char  result[],  char  password[]);
 
#endif //_ENCRYPTUNENCRYPT_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*============================= Include Files ===============================*/
#include"encryptUnencrypt.h"
#include<string.h>
 
/*****************************************************************************/
/*函数名:oneCharEncrypt*/
/*函数入口参数:要加密的数组*/
/*函数返回值:标识函数是否成功完成*/
/*函数功能:实现对一个字符串的加密*/
/*****************************************************************************/
static  char  oneCharEncrypt( char  ch)
{
     if ((ch >=  'a' ) && (ch <= 'z' ))
     {
         ch -= 32;
         if ( 'Z'  == ch)
         {
             ch =  'a' ;
         }
         else
         {
             ch += 1;
         }
     }
     else  if ((ch >=  'A' ) && (ch <=  'Z' ))
     {
         ch += 32;
         if ( 'z'  == ch)
         {
             ch =  'a' ;
         }
         else
         {
             ch += 1;
         }
     }
     else  if ((ch >=  '0' ) && (ch <=  '9' ))
     {
         if ( '9'  == ch)
         {
             ch =  '0' ;
         }
         else
         {
             ch += 1;
         }
         
     }
     else
     {
         return  ch;
     }
     return  ch;
}
/*****************************************************************************/
/*函数名:Encrypt*/
/*函数入口参数:加密和未加密两个数组*/
/*函数返回值:标识函数是否成功完成*/
/*函数功能:实现对字符串的加密*/
/*****************************************************************************/
int  Encrypt( char  aucPassword[],  char  aucResult[])
{
     int  index = 0;
     //求取要加密数组长度
     int  sizeArr =  strlen (aucPassword);
     //依次加密
     for (;index < sizeArr;index++)
     {
         aucResult[index] = oneCharEncrypt(aucPassword[index]);  
     }
     return  TURE;
}
/*****************************************************************************/
/*函数名:oneCharUnencrypt*/
/*函数入口参数:要解密的数组*/
/*函数返回值:标识函数是否成功完成*/
/*函数功能:实现对一个字符串的解密*/
/*****************************************************************************/
static  char  oneCharUnencrypt( char  ch)
{
     if ((ch >=  'a' ) && (ch <= 'z' ))
     {
         ch -= 33;
     }
     else  if ((ch >=  'A' ) && (ch <=  'Z' ))
     {
         ch += 31;
     }
     else  if ((ch >=  '0' ) && (ch <=  '9' ))
     {
         if ( '0'  == ch)
         {
             ch =  '9' ;
         }
         else
         {
             ch -= 1;
         }  
     }
     else
     {
         return  ch;
     }
     return  ch;
}
/*****************************************************************************/
/*函数名:unEncrypt*/
/*函数入口参数:加密和未加密两个数组*/
/*函数返回值:标识函数是否成功完成*/
/*函数功能:实现对字符串的解密*/
/*****************************************************************************/
int  unEncrypt( char  result[],  char  password[])
{
     int  index = 0;
     //解密字符串的长度
     int  sizeArr =  strlen (password);
     //依次解密
     for (;index < sizeArr;index++)
     {
         result[index] = oneCharUnencrypt(password[index]);
     }
     return  TURE;
}



本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1751676,如需转载请自行联系原作者
相关文章
|
安全 数据安全/隐私保护 C++
C/C++ 使用 cryptopp 加密解密
CryptLib 是新西兰奥克兰大学的Peter Gutmann先生花费了将近五年时间开发而成的一个加密安全工具包,它基于传统的计算机安全模型,并涉及到一个安全核心,各种抽象化了的对象位于核心之上。CRYPTLIB利用此加密库不同层次的接口,可以很容易地为各种应用系统提供安全服务,如加/解密、数字签名、认证等。
511 0
|
C# 数据安全/隐私保护
RSA不限长度非对称加密解密C#
RSA 分段加解密【解决“不正确的长度”的异常】   RSA 是常用的非对称加密算法。最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致。   .NET Framework 中提供的 RSA 算法规定:   待加密的字节数不能超过密钥的长度值除以 8 再减去 11(即:RSACryptoServiceProvider.KeySize / 8 - 11),而加密后得到密文的字节数,正好是密钥的长度值除以 8(即:RSACryptoServiceProvider.KeySize / 8)。
1606 0
|
算法 Java Maven
DES加解密算法:含DES密钥生成、参数名ASCII码从小到大排序
DES加解密算法:含DES密钥生成、参数名ASCII码从小到大排序
372 0
DES加解密算法:含DES密钥生成、参数名ASCII码从小到大排序
|
数据安全/隐私保护 C语言
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
148 0
【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
|
数据安全/隐私保护
|
算法 数据安全/隐私保护
|
算法 安全 网络安全
|
Java 数据安全/隐私保护
|
Go 数据安全/隐私保护
|
C# 数据安全/隐私保护