黄河勘测规划设计研究院有限公司岩土工程事业部工程公司 河南洛阳 471002
摘要:在数据加密级别不高的场合,需要一种简单的数据加密方法,只需要对数据进行稍微加密即可防止数据被篡改。本文介绍了一种方法,通过Labview对数据进行简单加密,可实现简洁、高效的加密效果。
关键词:LabVIEW;加密算法;秘钥;文本数据
A simple and efficient data encryption method /LV Wan-hong,XIN Zhi-xiang,LEI xiao-bing,YAO huan,(Yellow River Engineering Consulting Co.Ltd Geotechnical Engineering Division Engineering Company,Luoyang Henan 471002,China).
Abstract:When the level of data encryption is not high,a simple data encryption method is needed,which only needs to encrypt the data slightly to prevent the data from being tampered.This paper introduces a method of simple encryption of data
Key words:LabVIEW;encryption algorithm;secret key;text data
一、引言
在一些数据采集并且需要保存的场合,当数据的加密性要求不高并且需要随时查看时,数据常以文本文件的形式保存。但是以文本文件的形式保存数据存在一些缺点:为了达到某些要求,数据可能会被数据采集者修改,其实质就是编造数据,这是不允许的。而文本文件形式的数据能够直接读出,且比较易于修改。在这种情况下,就需要一种能对数据进行一定程度加密的算法对数据加密,以保证数据的真实性。本文所介绍的方法通过Labview对数据进行简洁、高效地加密。
LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
LabVIEW不但在程序界面设计时采用了与其他高级语言类似的图形化方式,更重要的是在编写程序代码、实现程序功能的同时,使用的也是图形化的操作方式。打开LabVIEW的程序,看到的不是一行行的文本,而是由一条条彩色线段连接起来的、各式各样的小图形块。
二、数据加密的几种常见方法
所谓数据加密技术是指将一个信息经过加密钥匙及加密函数转换,变成无意义的密文,而接收方则将此密文经过解密函数、解密钥匙还原成明文。
对称加密体系与非对称加密体系。对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。
非对称密钥加密,又称公钥密钥加密。它需要使用一对密钥 来分别完成加密和解密操作,一个公开发布,即公开密钥。另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括:DES(DataEncryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。3DES(TripleDES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。RC2和 RC4:用变长密钥对大量数据进行加密,比DES快;IDEA(InternationalData Encryption Algorithm)国际数据加密算法,使用128位密钥提供非常强的安全性。RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;DSA(DigitalSignature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准);
javascript中我们可以通过replace函数替换部分字符串为指定字符串。C语言中,strchr函数:匹配字符串中首次出现的指定字符。memchr函数,从buf所指内存区域的前n个字节查找字符。JAVA中可以用replace函数、replaceAll、replaceFirst等函数都可用于字符串替换。
三、本文所介绍的方法
在LabVIEW中“搜索替换子字符串”是字符串函数中的一个常用函数。“输入字符串”端子输入需要检索的字符串。“搜索字符串端子”端子接入要搜索或替换的字符串。“替换字符串”端子用于替换搜索字符串中的字符串。
本文所采用的方法就是通过“搜索替换子字符串”函数来实现数据加密和解密。具体方法是数据保存时,在程序中加入字符转换模块,通过2层for循环的输入隧道将数据索引依次取出,第一层for循环将2维数组数据索引成1维数组,第二层for循环将1维数组索引成单个元素,再将每个元素通过“搜索替换子字符串”函数按照加密规则替换。具体加密规则是:将“0”替换为“)”,“1”替换为“!”,“2”替换为“@”,“3”替换为“#”,“4”替换为“$”,“5”替换为“%”,“6”替换为“^”,“7”替换为“&”,“8”替换为“*”,“9”替换为“(”。程序框图如图1所示。这样,加密过的数据直接以文本的形式打开时就是乱码,如图2所示。
.png)
图1 加密程序框图
.png)
图2 文本方式打开显示乱码界面
.png)
图3 解密程序框图
.png)
图4 软件显示界面
而在软件显示界面,需要对数据进行解密,以便于查看数据。解密时,按照与加密规则相反的解密规则进行转换,即:将“)”替换为“0”,“!”替换为“1”,“@”替换为“2”,“#”替换为“3”,“$”替换为“4”,“%”替换为“5”,“^”替换为“6”,“&”替换为“7”,“*”替换为“8”,“(”替换为“9”。程序框图如图3所示。经过解密后,软件显示界面显示的数据即为正常数据,软件显示界面如图4所示。
四、结语
本文用到的数据加密方法已在古贤水利枢纽工程水文试验数据采集工作中得到应用,应用效果良好,能够很好的保证数据的真实性。
本文所用到的方法是较为简易的数据加密,容易被破解。但对于加密级别不高的地方来说,还是具有一定的意义的。如果需要用到复杂的数据加密方法,完全可以在本文的基础上做进一步加强:可以以一种代码加密表格中的第一行数据,以另外一种代码加密表格中的第二行数据,以此类推,则数据加密的的规律性大为降低,能够得到加密级别较高的数据。