适用于Android的对称加密方法技术

技术编号:17200565 阅读:20 留言:0更新日期:2018-02-04 01:52
本发明专利技术公开了一种适用于Android的对称加密方法,包括加密流程和解密流程;所述的方法包括以下步骤:使用TensorFlow搭建神经网络模型计算图;对模型进行训练,随机生成一个大小为4096的输入数据数组,每个数据为长度为8的向量;随机生成密钥,合并输入加密模型,加密输出数据再与同一个秘钥进行合并,然后输入解密模型,将解密模型的输出和原数据进行比较并计算平均误差;将训练好的模型参数和模型计算图保存为文件,导入到Android asset资源中,用TensorFlow的Android library调用即可。本发明专利技术结合了神经网络来实现加解密,使其核心算法不同于传统的对称加密算法,可以加强安全性。并且神经网络的结构,使用者可以根据自己的需要进行变化,只需重新训练参数。

【技术实现步骤摘要】
适用于Android的对称加密方法
本专利技术涉及信息加密
,具体涉及一种适用于Android的对称加密方法。
技术介绍
对称加密是一种成熟的加密方式,因其计算量小、加密速度快、加密效率高等优点而广泛应用于安卓应用的密码、文件、核心数据的加密上。现在比较流行的对称加密方法有DES、AES、Blowfish等等。但是对称加密的算法是公开的,且加密双方发送数据前必须保存好商定好的密钥,如果需要和多个对象完成通信,那么就会拥有数量巨大的密钥,管理如此多的密钥对双方来说都是一个很大的负担。而且只要一方的密钥泄露,那么加密信息也就不完全了。
技术实现思路
本专利技术克服了现有技术的不足,提供一种适用于Android的对称加密方法。为解决上述的技术问题,本专利技术采用以下技术方案:一种适用于Android的对称加密方法,包括加密流程和解密流程;所述的方法包括以下步骤:使用TensorFlow搭建神经网络模型计算图;对模型进行训练,随机生成一个大小为4096的输入数据数组,每个数据为长度为8的向量;随机生成密钥,合并输入加密模型,加密输出数据再与同一个秘钥进行合并,然后输入解密模型,将解密模型的输出和原数据进行比较并计算平均误差;将训练好的模型参数和模型计算图保存为文件,导入到Androidasset资源中,用TensorFlow的Androidlibrary调用即可。更进一步的技术方案是所述加密流程包括以下步骤:步骤一、获取到待加密的明文和密钥;步骤二、将明文和密钥转换为二进制方式表示,并将0映射为-1,1保持为1;步骤三、将明文和密钥合并,首先取明文的第一个字节和密钥的第一个字节,将密钥拼接在明文之后构成一组数据,然后取明文的第二个字节和密钥的第二个字节进行合并,依次类推,取到密钥的最后一个字节之后再从密钥的第一个字节开始取,直到明文的每一个字节均与密钥完成合并;步骤四、将合并的数据按组输入加密模型;步骤五、最后的输出即为加密后的密文。更进一步的技术方案是所述的步骤四中加密模型是一个已训练好的多层神经网络,每次取一组合并数据作为输入。更进一步的技术方案是所述的解密流程包括以下步骤:步骤一、获取到密文和密钥;步骤二、将密钥表示为二进制形式并将0映射为-1,1保持为1;步骤三、将密文和密钥进行合并,首先提取相当于一个字节的密文和密钥的第一个字节,然后将密钥拼接在密文之后构成一组数据,重复这个过程直到所有密文和密钥完成合并,当取到密钥的最后一个字节之后再从第一个字节开始取密钥;步骤四、将合并后的数据按组输入解密模型;步骤五、输出数据即为明文的二进制位近似数据,将其按字节恢复和解映射,得到明文二进制数据。与现有技术相比,本专利技术实施例的有益效果之一是:本专利技术结合了神经网络来实现加解密,使其核心算法不同于传统的对称加密算法,可以加强安全性。并且神经网络的结构,使用者可以根据自己的需要进行变化,只需重新训练参数。该算法可用来对文本类型数据进行加密,可以对ASCII字符进行加解密。附图说明图1为本专利技术一个实施例中加密模型结构示意图。图2为本专利技术一个实施例中加密流程图。图3为本专利技术一个实施例中解密流程图。具体实施方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。下面结合附图及实施例对本专利技术的具体实施方式进行详细描述。在下面的详细描述中,出于解释的目的描述了许多具体描述以便能够彻底理解所公开的实施方案,然而,很明显一个或多个实施方式可以在不使用这些具体描述的情况下实施,在其他实例中,示意性地显示已知结构和装置,以便简化附图。根据本专利技术的一个实施例,本实施例公开一种适用于Android的对称加密方法,该方法首先需要使用TensorFlow搭建神经网络模型计算图,其次对模型进行训练,训练方法为随机生成一个大小为4096的输入数据数组,每个数据为长度为8的向量,表示一个字节的数据,随机数据的样本空间为可能被用作明文进行加密的字符,比如常用的ASCII字符。然后随机生成密钥,合并后输入加密模型,加密输出数据再输入解密模型,将解密模型的输出和原数据进行比较并计算平均误差,优化器采用AdamOptimizer。将训练好的模型参数和计算图保存为文件,导入到Androidasset资源中,用TensorFlow的Androidlibrary调用即可。具体的,如图2和图3所示,本实施例对加密解密模型细节作出具体阐述。本实施例中该对称加密包含两个流程:加密流程和解密流程,下面分别描述这两个流程。如图2所示,所述加密流程包括以下步骤:1、获取到待加密的明文和密钥。2、将明文和密钥转换为二进制方式表示,并将0映射为-1,1保持为1。例如,需要加密的明文字符串为“abc”,密钥字符串为“123”,编码方式为ASCII,将其转换为二进制并进行映射之后的数据为“[-1,1,1,-1,-1,-1,-1,1],[-1,1,1,-1,-1,-1,1,-1],[-1,1,1,-1,-1,-1,1,1]”(abc)和“[-1,-1,1,1,-1,-1,-1,1],[-1,-1,1,1,-1,-1,1,-1],[-1,-1,1,1,-1,-1,1,1]”(123)。3、将明文和密钥合并,首先取明文的第一个字节(8个二进制位)和密钥的第一个字节,将密钥拼接在明文之后构成一组数据,然后取明文的第二个字节和密钥的第二个字节进行合并,依次类推,取到密钥的最后一个字节之后再从密钥的第一个字节开始取,直到明文的每一个字节均与密钥完成合并。例如,将明文“abc”和密文“123”的合并结果为“[-1,1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,-1,-1,1],[-1,1,1,-1,-1,-1,1,-1,-1,-1,1,1,-1,-1,1,-1],[-1,1,1,-1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1]”(a1b2c3)4、将合并的数据按组输入加密模型。加密模型是一个已训练好的多层神经网络,每次取一组合并数据作为输入,网络结构如图1所示。加密网络的第一层为全连接层,有16个神经元,令输入向量为X,第i个神经元的权重向量为W1,i,bias为b,则第i个神经元的输出h1,i=W1,iTX+b。输入数据经过第一层之后的输出H1为长度16的向量。第二层为卷积层,有两个神经元,激活函数为sigmoid,令第i个神经元的卷积核为W2,i,bias为b,则第i个神经元的输出特征map为H2,i=sigmoid(H1*W2,i+b),第二层卷积的步长为2,输出两个特征map,即最终输出H2为2×8的矩阵。第三层卷积层有一个神经元,激活函数为sigmoid,对明文特征和密文特征进行混合提取特征,输出为H3=sigmoid(H2*W3+b),最后一层卷积层有一个神经元,激活函数为tanh,输出为H4=tanh(H3*W4+b)。5、最后的输出即为加密后的密文。具体的,如图3所示,所述解密流程包括以下步骤本文档来自技高网...
适用于Android的对称加密方法

【技术保护点】
一种适用于Android的对称加密方法,包括加密流程和解密流程;其特征在于:所述的方法包括以下步骤:使用TensorFlow搭建神经网络模型计算图;对模型进行训练,随机生成一个大小为4096的输入数据数组,每个数据为长度为8的向量;随机生成密钥,合并输入加密模型,加密输出数据再与同一个秘钥进行合并,然后输入解密模型,将解密模型的输出和原数据进行比较并计算平均误差;将训练好的模型参数和模型计算图保存为文件,导入到Android asset资源中,用TensorFlow的Android library调用即可。

【技术特征摘要】
1.一种适用于Android的对称加密方法,包括加密流程和解密流程;其特征在于:所述的方法包括以下步骤:使用TensorFlow搭建神经网络模型计算图;对模型进行训练,随机生成一个大小为4096的输入数据数组,每个数据为长度为8的向量;随机生成密钥,合并输入加密模型,加密输出数据再与同一个秘钥进行合并,然后输入解密模型,将解密模型的输出和原数据进行比较并计算平均误差;将训练好的模型参数和模型计算图保存为文件,导入到Androidasset资源中,用TensorFlow的Androidlibrary调用即可。2.根据权利要求1所述的适用于Android的对称加密方法,其特征在于所述加密流程包括以下步骤:步骤一、获取到待加密的明文和密钥;步骤二、将明文和密钥转换为二进制方式表示,并将0映射为-1,1保持为1;步骤三、将明文和密钥合并,首先取明文的第一个字节和密钥的第一个字节,将密钥拼接在明文之后构成一组数据,然后取明文的第二个字节和密钥的第二个字节...

【专利技术属性】
技术研发人员:胡秩铭刘蛟李伟光郑鸿
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1