程序中对密码进行加解密的C代码示例

问题的提出

在实际的软件项目中,经常涉及到对密码的处理,如用户登录密码、数据库密码、FTP密码等。为了增加软件的灵活性,一般都要求将这些密码放到一个配置文件中。但密码原文容易记录,若被软件入侵者获取,则后果不堪设想。因此我们不能直接将密码原文填入配置文件中,而要先对密码进行加密,然后将加密之后的密文填入配置文件,等程序读取配置之后再进行解密处理。

整个流程如图1所示。

图1 加解密总体流程

示例程序流程

为了演示整个加解密的流程,设计了一个演示程序,其执行流程如图2所示。

图2 示例程序流程

示例程序代码

配置文件示例

配置文件命名为Config.ini,其设置如图3所示。

图3 配置文件内容

程序执行结果

1. iDecryptFlag为0时:

执行结果如图4所示:

图4 iDecryptFlag为0时的执行结果

查看配置文件,这时密码值为加密之后的密文。

2. iDecryptFlag为1时:

执行结果如图5所示:

图5 iDecryptFlag为1时的执行结果

查看配置文件,这时密码值经历了“原文-->密文-->原文”的过程。

时间: 2024-10-01 01:00:37

程序中对密码进行加解密的C代码示例的相关文章

Cryptography中的对称密钥加解密:fernet算法探究

原创文章,欢迎转发朋友圈,转载请注明出处 cryptography是python语言中非常著名的加解密库,在算法层面提供了高层次的抽象,使用起来非常简单.直观,pythonic,同时还保留了各种不同算法的低级别接口,保留灵活性. 我们知道加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption).,各自对应多种不同的算法,每种算法又有不同的密钥位长要求,另外还涉及到不同的分组加密模式,以及末尾补齐方式.因此需要高层次

C#NET字符编码加解密的参考代码

//C#NET字符编码加解密的参考代码我是从老外程序里面拷贝出来的希望对大家有所用 1 public string Encrypt(string name) { 2 byte ivId = GetIVId(name); 3 cipher.IV = GetIV(ivId); 4 var buf = Encoding.UTF8.GetBytes(name); 5 6 using (var ms = new MemoryStream()) { 7 ms.WriteByte(ivId); 8 using

程序中的bss段,data段,代码段,堆,栈

程序中的bss段,data段,代码段(.text),堆(heap),栈(stack) .bss段:程序中未初始化的和已经初始化为0的全局变量和已经初始化为0的静态局部变量(static) .data段:程序中已经初始化的非零的全局变量和已经初始化的非零的静态局部变量(static) 代码段:用来存放代码的地方(.text段),不可修改,存放在只读区域内. 堆:程序员自己申请的内存区域,也就是用malloc()函数申请的内存区域,用free()函数来释放的区域. 栈:存放局部变量的区域,函数中的局

c#程序中对密码进行加密的方法

在ADO.NET中,向数据库添加数据时,怎样对数据中的密码进行加密?(也就是说在数据表中也看不到用户的密 码,只是一些经过编译后的字符串,以防止数据库管理员利用用户的密码进行非法操作.)    首先,在c#WinForm程序中引入命名空间,"using System.Web.Security;",此命名空间是专门用来对程序进 行安全设置的:    其次,定义一个string类型的变量,用来接收用输入的密码:  string passWord = this.textBox1.Text.T

Java中RSA非对称密钥加解密使用示例

一.简介: RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.RSA是第一个比较完善的公开密钥算法,它既能用于加密,也能用于数字签名.这个算法经受住了多年深入的密码分析,虽然密码分析者既不能证明也不能否定RSA的安全性,但这恰恰说明该算法有一定的可信性,目前它已经成为最流行的公开密钥算法. 二.RSA的公钥.私钥的组成,以及加密.解密的公式可见于下表 三.使用方式: ①  假设A.B机器进行通信,已A机器为主: ②  A首先需要用自己的私钥为发送请求数据签名,并将公钥一同发送

微信小程序中使用ECharts 异步加载数据 实现图表

<!--pages/bar/index.wxml--> <view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view> import * as echarts from '../../ec-canvas

vue中使用base64进行加解密

vue进行Base64加解密 背景 项目中需要对特殊字符进行处理,避免json和数据库的特殊字符(""等)冲突,刚好学了信息安全,干脆整个加解密,wkk.. 使用步骤 打开dos,在项目根目录运行npm install --save js-base64 在组件中引入let Base64 = require('js-base64').Base64 使用 Base64.encode(明文) Base64.decode(密文) 原文地址:https://www.cnblogs.com/quj

结构体中指针赋值问题的分析及C代码示例

问题描述 某结构体的定义如下: typedef struct { int iAge; // 年龄 char szAddr1[100]; // 地址1 char *pszAddr2; // 地址2 char **pszAddr3; // 地址3 } T_PeopleInfo; 请问如何对结构体中的各个成员变量(尤其是指针变量)进行赋值? 问题分析及C代码示例 我们可以看到,在结构体T_PeopleInfo中,pszAddr2和pszAddr3均为指针,其中pszAddr2为一级指针,pszAddr

MeshLab中画面在前面加个f的代码

public class FormatOutput { public static void main(String[] args) { for(int i=1;i<=9684;i=i+4) { System.out.println("f "+i+" "+(i+1)+" "+(i+2)+" "+(i+3)); } } }