验证图像真伪的方法和装置与流程

文档序号:12064808阅读:252来源:国知局
验证图像真伪的方法和装置与流程

本发明涉及图像技术领域,尤其涉及一种验证图像真伪的方法和装置。



背景技术:

现有很多的业务场景都需要用户提供各种证件进行身份认证,在通过证件进行身份认证过程中,除了验证原件外还需要对证件进行拍照,存储所拍摄的证件的图像,以备后续验证。但是很多非法分子为了获取不当利益,会恶意篡改证件的图像。

为了识别被篡改后的图像,现有的方法一般都是在图像中添加水印,通过检测水印的完整性来确定图像是否被篡改。但是随着图像编辑技术的发展,非法分子在篡改图像后,可在图像中重新加入相同的水印,导致不能识别出被非法分子篡改后的图像,不能保证图像的真实性。



技术实现要素:

本发明的主要目的在于提供一种验证图像真伪的方法和装置,旨在解决现有的验证图像真伪的方法不能保证图像的真实性的技术问题。

为实现上述目的,本发明提供的一种验证图像真伪的方法,所述验证图像真伪的方法包括:

当客户端获取到图像时,计算所述图像像素的哈希值,得到所述图像的哈希指纹;

获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中;

将含有认证标识的所述图像发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。

优选地,所述标识信息包括获取所述图像的设备名称和冗余字符串,所述以供所述服务端根据所述图像中的认证标识验证所述图像的真伪的步骤包括:

由所述服务端接收所述客户端发送的所述图像,获取所述图像的认证标识,判断所述认证标识中的设备名称是否与预存设备名称一致;

若所述设备名称与所述预存设备名称不一致,则确定所述图像为伪造的图像;

若所述设备名称与所述预存设备名称一致,则计算所述图像的哈希指纹;

若计算所得的哈希指纹与所述认证标识中的哈希指纹不一致,则确定所述图像为伪造的图像;

若计算所得的哈希指纹与所述认证标识中的哈希指纹一致,则判断所述认证标识中的冗余字符串是否与预存冗余字符串一致;

若所述冗余字符串与所述预存冗余字符串不一致,则确定所述图像为伪造的图像;

若所述冗余字符串与所述预存冗余字符串一致,则确定所述图像为真实的图像。

优选地,所述当客户端获取到图像时,计算所述图像像素的哈希值,得到所述图像的哈希指纹的步骤包括:

当所述客户端获取到所述图像时,对所述图像进行预处理,得到预处理后的所述图像;

计算预处理后的所述图像像素的均值,将预处理后的所述图像各个像素点的像素值与所述均值进行对比;

若像素点的像素值大于所述均值,则将所述像素点的像素值设置为1;

若像素点的像素值小于或者等于所述均值,则将所述像素点的像素值设置为0;

根据像素值为1和0的像素点生成所述图像的哈希指纹。

优选地,所述当所述客户端获取到所述图像时,对所述图像进行预处理,得到预处理后的所述图像的步骤包括:

当所述客户端获取到所述图像时,对所述图像进行灰度化处理,得到灰度化后的所述图像;

将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像;

对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。

优选地,所述获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中的步骤包括:

获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识;

通过对称加密算法生成加密密钥;

通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥;

将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

此外,为实现上述目的,本发明还提供一种验证图像真伪的装置,所述验证图像真伪的装置包括:

计算模块,用于当获取到图像时,计算所述图像像素的哈希值,得到所述图像的哈希指纹;

拼接模块,用于获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中;

发送模块,用于将含有认证标识的所述图像发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。

优选地,所述标识信息包括获取所述图像的设备名称和冗余字符串;

所述发送模块还用于将所述图像发送给所述服务端,由所述服务端接收所述图像,获取所述图像的认证标识,判断所述认证标识中的设备名称是否与预存设备名称一致;若所述设备名称与所述预存设备名称不一致,则确定所述图像为伪造的图像;若所述设备名称与所述预存设备名称一致,则计算所述图像的哈希指纹;若计算所得的哈希指纹与所述认证标识中的哈希指纹不一致,则确定所述图像为伪造的图像;若计算所得的哈希指纹与所述认证标识中的哈希指纹一致,则判断所述认证标识中的冗余字符串是否与预存冗余字符串一致;若所述冗余字符串与所述预存冗余字符串不一致,则确定所述图像为伪造的图像;若所述冗余字符串与所述预存冗余字符串一致,则确定所述图像为真实的图像。

优选地,所述计算模块包括:

预处理单元,用于当获取到所述图像时,对所述图像进行预处理,得到预处理后的所述图像;

计算单元,用于计算预处理后的所述图像像素的均值,将预处理后的所述图像各个像素点的像素值与所述均值进行对比;

设置单元,用于若像素点的像素值大于所述均值,则将所述像素点的像素值设置为1;若像素点的像素值小于或者等于所述均值,则将所述像素点的像素值设置为0;

第一生成单元,用于根据像素值为1和0的像素点生成所述图像的哈希指纹。

优选地,所述预处理单元还用于当获取到所述图像时,对所述图像进行灰度化处理,得到灰度化后的所述图像;将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像;对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。

优选地,所述拼接模块包括:

拼接单元,用于获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识;

第二生成单元,用于通过对称加密算法生成加密密钥;

加密单元,用于通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥;

添加单元,用于将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

本发明通过客户端计算所接收图像的像素的哈希值,得到所述图像的哈希指纹,将所获取的标识信息和所述哈希指纹拼接成认证标识添加至所述图像中,并发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。实现了通过图像的像素得到所述图像的哈希指纹,在哈希指纹的基础上加上所述图像的标识信息来唯一标识所述图像,从而识别所述图像是否被非法分子篡改,保证所述图像的真实性。

附图说明

图1为本发明验证图像真伪的方法的较佳实施例的流程示意图;

图2为本发明实施例中获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中的一种流程示意图;

图3为本发明验证图像真伪的装置的较佳实施例的功能模块示意图;

图4为本发明实施例中拼接模块的一种功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种验证图像真伪的方法。

参照图1,图1为本发明验证图像真伪的方法较佳实施例的流程示意图。

在本实施例中,所述验证图像真伪的方法包括:

步骤S10,当客户端获取到图像时,计算所述图像像素的哈希值,得到所述图像的哈希指纹。

当客户端获取到图像时,所述客户端通过所述图像的像素值计算得到所述图像的哈希值,根据计算所得的哈希值得到所述图像的哈希指纹。需要说明的是,在本实施例中,是采用基于图像像素的指纹提取算法得到所述图像的哈希值。相比于通过加密散列函数算法计算所述图像的哈希值,本实施例中的基于图像像素的指纹提取算法,可以避免因极小的改变而导致图像的哈希值大幅度的改变,保证计算所得的所述图像哈希值的稳定性。所述加密散列函数算法对输入源极为敏感,输入中极为细微的变化都会引起计算出的哈希值的显著改变。但有时需要对图像做一些无害的操作,如将图像放大或者缩小,但实际内容可能并没有改变,但加密散列函数算法输出的哈希值就会发生极大变化,而基于图像像素的指纹提取算法则不会出现这种问题。

进一步地,所述步骤S10包括:

步骤a,当所述客户端获取到所述图像时,对所述图像进行预处理,得到预处理后的所述图像。

当所述客户端得到所述图像,在计算所述图像的哈希指纹过程中,需要先对所述图像进行预处理,以得到预处理后的所述图像。

进一步地,所述步骤a包括:

步骤a1,当所述客户端获取到所述图像时,对所述图像进行灰度化处理,得到灰度化后的所述图像;

当所述客户端获取到所述图像时,所述客户端对所述图像进行预处理的具体过程为:当所述客户端获取到所述图像时,所述客户端对所述图像进行灰度化处理,得到灰度化后的所述图像。所述灰度化是在RGB模型中,如果R(红)=G(绿)=B(蓝)时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255,一般有以下四种方法对彩色图像进行灰度化,分别为分量法,最大值法,平均值法和加权平均法。

步骤a2,将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像;

所述客户端将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像。需要说明的是,所述预设比例根据具体需要而设置,如当设置为8*8时,表示将灰度化后的所述图像缩小为8*8的尺度。

步骤a3,对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。

当所述客户端得到缩小后的所述图像后,所述客户端对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。所述离散余弦变换是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是离散余弦变换只使用实数。所述离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位。

步骤b,计算预处理后的所述图像像素的均值,将预处理后的所述图像各个像素点的像素值与所述均值进行对比。

步骤c,若像素点的像素值大于所述均值,则将所述像素点的像素值设置为1。

步骤d,若像素点的像素值小于或者等于所述均值,则将所述像素点的像素值设置为0。

步骤e,根据像素值为1和0的像素点生成所述图像的哈希指纹。

当所述客户端得到预处理后的所述图像后,所述客户端提取预处理后的所述图像中各个像素点的像素值,将各个像素点的像素值之和除以所述图像中像素点的数量,得到预处理后的所述图像像素的均值。所述客户端将预处理后的所述图像各个像素点的像素值与所述图像像素的均值进行对比。当所述图像像素点的像素值大于所述图像像素的均值时,所述客户端将所述图像像素点的像素值设置为1;当所述图像像素点的像素值小于或者等于所述图像像素的均值时,所述客户端将所述图像像素点的像素值设置为0。所述客户端根据像素值为1和0的像素点生成所述图像的哈希指纹。

步骤S20,获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中。

当所述客户端得到所述图像的哈希指纹时,所述客户端获取用于标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识,将所述认证标识添加至所述图像中。可以理解的是,所述标识信息是可唯一表示所述图像的标识。

进一步地,所述标识信息包括获取所述图像的设备名称和冗余字符串。所述冗余字符串可根据需要自由设置,如可设置为AABB_1122。所述客户端在将所述标识信息和所述哈希指纹拼接成认证标识得过程中,可以通过特殊字符来间隔区分所述哈希指纹、设备名称和冗余字符串。所述特殊字符包括但不限于“#”和“/”。如当用img_footPrint表示所述图像的哈希指纹,用APP_name表示获取所述图像的设备名称,用redundant_str表示所述冗余字符串时,所述认证标识可表示为APP_name#img_footPrint#redundant_str。需要说明的是,在所述认证标识中,所述哈希指纹、设备名称和冗余字符串的排列顺序没有限制,如所述认证标识也可以表示为img_footPrint#APP_name#redundant_str,或者表示为img_footPrint#redundant_str#APP_name。

步骤S30,将含有认证标识的所述图像发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。

当所述客户端得到含有认证标识的所述图像后,将含有认证标识的所述图像发送给服务端。当所述服务端接收到所述客户端发送的所述图像后,所述服务端根据所述图像中的认证标识验证所述图像的真伪。

进一步地,当所述标识信息包括获取所述图像的设备名称和冗余字符串时,所述以供所述服务端根据所述图像中的认证标识验证所述图像的真伪的步骤包括:

步骤f,由所述服务端接收所述客户端发送的所述图像,获取所述图像的认证标识,判断所述认证标识中的设备名称是否与预存设备名称一致;

步骤g,若所述设备名称与所述预存设备名称不一致,则确定所述图像为伪造的图像;

步骤h,若所述设备名称与所述预存设备名称一致,则计算所述图像的哈希指纹;

当所述标识信息包括获取所述图像的设备名称和冗余字符串,且所述服务端接收到所述客户端发送的所述图像时,所述服务端获取所述图像中的认证标识,拆分所述认证标识,得到所述认证标识中的设备名称、冗余字符串和哈希指纹。进一步地,所述服务端在拆分所述认证标识过程中,可通过所述特殊字符来拆分所述认证标识。

当所述服务端得到所述认证标识中的设备名称、冗余字符串和哈希指纹时,所述服务端判断所述认证标识中的设备名称是否与其预存设备名称一致。当所述认证标识中的设备名称与所述预存设备名称不一致时,所述服务端确定所述图像不是由指定的设备所拍摄的,为伪造的图像;当所述认证标识中的设备名称与所述预存设备名称一致时,所述服务端计算所述图像的哈希指纹。需要说明的是,所述服务端计算所述图像的哈希指纹与所述客户端计算所述图像像素的哈希值,得到所述图像的哈希指纹的过程相同,在此不再赘述。

步骤i,若计算所得的哈希指纹与所述认证标识中的哈希指纹不一致,则确定所述图像为伪造的图像;

步骤j,若计算所得的哈希指纹与所述认证标识中的哈希指纹一致,则判断所述认证标识中的冗余字符串是否与预存冗余字符串一致;

步骤k,若所述冗余字符串与所述预存冗余字符串不一致,则确定所述图像为伪造的图像;

步骤l,若所述冗余字符串与所述预存冗余字符串一致,则确定所述图像为真实的图像。

当所述服务端计算得到所述图像的哈希指纹时,所述服务端将计算所得的哈希指纹与所述认证标识中的哈希指纹进行比较。当计算所得的哈希指纹与所述认证标识中的哈希指纹不一致时,所述服务端确定所述图像为已被非法篡改,是伪造的图像;当计算所得的哈希指纹与所述认证标识中的哈希指纹一致时,所述服务端判断所述认证标识中的冗余字符串是否与预存冗余字符串一致。当所述认证标识中的冗余字符串与所述预存冗余字符串不一致时,所述服务端确定所述图像为伪造的图像;当所述认证标识中的冗余字符串与所述预存冗余字符串一致时,所述服务端确定所述图像为真实的图像。需要说明的是,所述预存设备名称和所述预存冗余字符串是所述客户端在发送所述认证标识之前,发送给所述服务端的。

进一步地,当所述服务端确定所述图像为真实的图像时,所述服务端发送验证成功的消息给所述客户端。当所述客户端接收到验证成功的消息后,所述客户端继续执行下一操作,如执行开户操作。当所述服务端确定所述图像为伪造的图像时,所述服务端发送验证失败的消息给所述客户端。当所述客户端接收到验证失败的消息后,所述客户端输出提示信息,提示用户重新拍摄所述图像或者重新上传所述图像。

本实施例通过客户端计算所接收图像的像素的哈希值,得到所述图像的哈希指纹,将所获取的标识信息和所述哈希指纹拼接成认证标识添加至所述图像中,并发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。实现了通过图像的像素得到所述图像的哈希指纹,在哈希指纹的基础上加上所述图像的标识信息来唯一标识所述图像,从而识别所述图像是否被非法分子篡改,保证所述图像的真实性。

进一步地,基于本发明验证图像真伪的方法的较佳实施例提出本发明的另一实施例,参照图2,在本实施例中,所述步骤S20包括:

步骤S21,获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识;

步骤S22,通过对称加密算法生成加密密钥;

当所述客户端获取到标识所述图像的标识信息后,所述客户端将所述标识信息和所述哈希指纹拼接成认证标识,并发送认证请求给所述服务端。当所述服务端接收到所述认证请求时,所述服务端根据非对称加密算法得到对应的公钥和私钥,存储所述私钥,将所述公钥发送给所述客户端。所述客户端接收所述公钥,并通过对称加密算法生成加密密钥。所述客户端可以先发送认证请求给所述服务端,然后再通过所述对称加密算法生成加密密钥,也可以先通过所述对称加密算法生成加密密钥,然后再发送认证请求给所述服务端。需要说明的是,所述对称加密算法包括但不限于DES(Data Encryption Standard,数据加密标准)、3DES、IDEA(International Data Encryption Algorithm)和AES(Advanced Encryption Standard,高级加密标准),所述非对称加密算法包括但不限于RSA、Elgamal和椭圆加密算法ECC。

步骤S23,通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥;

步骤S24,将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

当所述服务端得到所述加密密钥后,所述服务端通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥,得到加密后的所述认证标识和加密后的所述加密密钥,将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

进一步地,所述客户端将加密后的所述认证标识添加至所述图像中的具体过程为:所述客户端将加密后的所述认证标识添加至所述图像附属的头文件Header中,具体添加至所述Header中名为Make的Tag信息中。需要说明的是,所述图像的header区域与数据区域相互独立,因此在将所述认证标识添加至所述图像中后,不影响所述图像数据区域的内容。在将所述加密后的所述认证标识添加至所述图像中后,所述客户端使用所述公钥加密所述加密密钥,将加密后的所述加密密钥添加至所述图像附属的头文件Header中,具体添加至所述Header中名为MODEL的Tag信息中。当所述服务端得到所述图像后,在所述图像的Header中名为Make的Tag信息中提取加密后的所述认证标识,在所述图像的Header中名为MODEL的Tag信息中提取加密后的所述加密密钥。当所述服务端得到加密后的所述加密密钥后,所述服务端通过与所述公钥对应的私钥解密加密后的所述加密密钥,得到所述加密密钥,通过解密所得的所述加密密钥解密在所述Make的Tag信息中提取的所述认证标识,得到解密后的所述认证标识。所述服务端拆分所述认证标识,得到所述认证标识中的设备名称、冗余字符串和哈希指纹。

本实施例通过加密密钥对认证标识进行加密,并对加密所述认证标识的加密进行加密,防止所述图像被非法分子篡改,保证了所述图像在传输过程中的安全性。

本发明进一步提供一种验证图像真伪的装置100。

参照图3,图3为本发明验证图像真伪的装置100较佳实施例的功能模块示意图。

需要强调的是,对本领域的技术人员来说,图3所示模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图3所示的验证图像真伪的装置100的模块,可轻易进行新的模块的补充;各模块的名称是自定义名称,仅用于辅助理解该验证图像真伪的装置100的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的模块所要达成的功能。

在本实施例中,所述验证图像真伪的装置100包括:

计算模块10,用于当获取到图像时,计算所述图像像素的哈希值,得到所述图像的哈希指纹。

当客户端获取到图像时,所述客户端通过所述图像的像素值计算得到所述图像的哈希值,根据计算所得的哈希值得到所述图像的哈希指纹。需要说明的是,在本实施例中,是采用基于图像像素的指纹提取算法得到所述图像的哈希值。相比于通过加密散列函数算法计算所述图像的哈希值,本实施例中的基于图像像素的指纹提取算法,可以避免因极小的改变而导致图像的哈希值大幅度的改变,保证计算所得的所述图像哈希值的稳定性。所述加密散列函数算法对输入源极为敏感,输入中极为细微的变化都会引起计算出的哈希值的显著改变。但有时需要对图像做一些无害的操作,如将图像放大或者缩小,但实际内容可能并没有改变,但加密散列函数算法输出的哈希值就会发生极大变化,而基于图像像素的指纹提取算法则不会出现这种问题。

进一步地,所述计算模块10包括:

预处理单元,用于当获取到所述图像时,对所述图像进行预处理,得到预处理后的所述图像。

当所述客户端得到所述图像,在计算所述图像的哈希指纹过程中,需要先对所述图像进行预处理,以得到预处理后的所述图像。

进一步地,所述预处理单元还用于当获取到所述图像时,对所述图像进行灰度化处理,得到灰度化后的所述图像;

当所述客户端获取到所述图像时,所述客户端对所述图像进行预处理的具体过程为:当所述客户端获取到所述图像时,所述客户端对所述图像进行灰度化处理,得到灰度化后的所述图像。所述灰度化是在RGB模型中,如果R(红)=G(绿)=B(蓝)时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255,一般有以下四种方法对彩色图像进行灰度化,分别为分量法,最大值法,平均值法和加权平均法。

所述预处理单元还用于将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像;

所述客户端将灰度化后的所述图像缩小至预设比例,得到缩小后的所述图像。需要说明的是,所述预设比例根据具体需要而设置,如当设置为8*8时,表示将灰度化后的所述图像缩小为8*8的尺度。

所述预处理单元还用于对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。

当所述客户端得到缩小后的所述图像后,所述客户端对缩小后的所述图像进行离散余弦变换,得到预处理后的所述图像。所述离散余弦变换是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是离散余弦变换只使用实数。所述离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位。

计算单元,用于计算预处理后的所述图像像素的均值,将预处理后的所述图像各个像素点的像素值与所述均值进行对比。

设置单元,用于若像素点的像素值大于所述均值,则将所述像素点的像素值设置为1;若像素点的像素值小于或者等于所述均值,则将所述像素点的像素值设置为0。

第一生成单元,用于根据像素值为1和0的像素点生成所述图像的哈希指纹。

当所述客户端得到预处理后的所述图像后,所述客户端提取预处理后的所述图像中各个像素点的像素值,将各个像素点的像素值之和除以所述图像中像素点的数量,得到预处理后的所述图像像素的均值。所述客户端将预处理后的所述图像各个像素点的像素值与所述图像像素的均值进行对比。当所述图像像素点的像素值大于所述图像像素的均值时,所述客户端将所述图像像素点的像素值设置为1;当所述图像像素点的像素值小于或者等于所述图像像素的均值时,所述客户端将所述图像像素点的像素值设置为0。所述客户端根据像素值为1和0的像素点生成所述图像的哈希指纹。

拼接模块20,用于获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识添加至所述图像中。

当所述客户端得到所述图像的哈希指纹时,所述客户端获取用于标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识,将所述认证标识添加至所述图像中。可以理解的是,所述标识信息是可唯一表示所述图像的标识。

进一步地,所述标识信息包括获取所述图像的设备名称和冗余字符串。所述冗余字符串可根据需要自由设置,如可设置为AABB_1122。所述客户端在将所述标识信息和所述哈希指纹拼接成认证标识得过程中,可以通过特殊字符来间隔区分所述哈希指纹、设备名称和冗余字符串。所述特殊字符包括但不限于“#”和“/”。如当用img_footPrint表示所述图像的哈希指纹,用APP_name表示获取所述图像的设备名称,用redundant_str表示所述冗余字符串时,所述认证标识可表示为APP_name#img_footPrint#redundant_str。需要说明的是,在所述认证标识中,所述哈希指纹、设备名称和冗余字符串的排列顺序没有限制,如所述认证标识也可以表示为img_footPrint#APP_name#redundant_str,或者表示为img_footPrint#redundant_str#APP_name。

发送模块30,用于将含有认证标识的所述图像发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。

当所述客户端得到含有认证标识的所述图像后,将含有认证标识的所述图像发送给服务端。当所述服务端接收到所述客户端发送的所述图像后,所述服务端根据所述图像中的认证标识验证所述图像的真伪。

进一步地,当所述标识信息包括获取所述图像的设备名称和冗余字符串时;所述发送模块30还用于将所述图像发送给所述服务端,由所述服务端接收所述图像,获取所述图像的认证标识,判断所述认证标识中的设备名称是否与预存设备名称一致;若所述设备名称与所述预存设备名称不一致,则确定所述图像为伪造的图像;若所述设备名称与所述预存设备名称一致,则计算所述图像的哈希指纹;若计算所得的哈希指纹与所述认证标识中的哈希指纹不一致,则确定所述图像为伪造的图像;若计算所得的哈希指纹与所述认证标识中的哈希指纹一致,则判断所述认证标识中的冗余字符串是否与预存冗余字符串一致;若所述冗余字符串与所述预存冗余字符串不一致,则确定所述图像为伪造的图像;若所述冗余字符串与所述预存冗余字符串一致,则确定所述图像为真实的图像。

当所述标识信息包括获取所述图像的设备名称和冗余字符串,且所述服务端接收到所述客户端发送的所述图像时,所述服务端获取所述图像中的认证标识,拆分所述认证标识,得到所述认证标识中的设备名称、冗余字符串和哈希指纹。进一步地,所述服务端在拆分所述认证标识过程中,可通过所述特殊字符来拆分所述认证标识。

当所述服务端得到所述认证标识中的设备名称、冗余字符串和哈希指纹时,所述服务端判断所述认证标识中的设备名称是否与其预存设备名称一致。当所述认证标识中的设备名称与所述预存设备名称不一致时,所述服务端确定所述图像不是由指定的设备所拍摄的,为伪造的图像;当所述认证标识中的设备名称与所述预存设备名称一致时,所述服务端计算所述图像的哈希指纹。需要说明的是,所述服务端计算所述图像的哈希指纹与所述客户端计算所述图像像素的哈希值,得到所述图像的哈希指纹的过程相同,在此不再赘述。

当所述服务端计算得到所述图像的哈希指纹时,所述服务端将计算所得的哈希指纹与所述认证标识中的哈希指纹进行比较。当计算所得的哈希指纹与所述认证标识中的哈希指纹不一致时,所述服务端确定所述图像为已被非法篡改,是伪造的图像;当计算所得的哈希指纹与所述认证标识中的哈希指纹一致时,所述服务端判断所述认证标识中的冗余字符串是否与预存冗余字符串一致。当所述认证标识中的冗余字符串与所述预存冗余字符串不一致时,所述服务端确定所述图像为伪造的图像;当所述认证标识中的冗余字符串与所述预存冗余字符串一致时,所述服务端确定所述图像为真实的图像。需要说明的是,所述预存设备名称和所述预存冗余字符串是所述客户端在发送所述认证标识之前,发送给所述服务端的。

进一步地,当所述服务端确定所述图像为真实的图像时,所述服务端发送验证成功的消息给所述客户端。当所述客户端接收到验证成功的消息后,所述客户端继续执行下一操作,如执行开户操作。当所述服务端确定所述图像为伪造的图像时,所述服务端发送验证失败的消息给所述客户端。当所述客户端接收到验证失败的消息后,所述客户端输出提示信息,提示用户重新拍摄所述图像或者重新上传所述图像。

本实施例通过客户端计算所接收图像的像素的哈希值,得到所述图像的哈希指纹,将所获取的标识信息和所述哈希指纹拼接成认证标识添加至所述图像中,并发送给服务端,以供所述服务端根据所述图像中的认证标识验证所述图像的真伪。实现了通过图像的像素得到所述图像的哈希指纹,在哈希指纹的基础上加上所述图像的标识信息来唯一标识所述图像,从而识别所述图像是否被非法分子篡改,保证所述图像的真实性。

进一步地,基于本发明验证图像真伪的装置100的较佳实施例提出本发明的另一实施例,参照图4,在本实施例中,所述拼接模块20包括:

拼接单元21,用于获取标识所述图像的标识信息,将所述标识信息和所述哈希指纹拼接成认证标识;

第二生成单元22,用于通过对称加密算法生成加密密钥;

当所述客户端获取到标识所述图像的标识信息后,所述客户端将所述标识信息和所述哈希指纹拼接成认证标识,并发送认证请求给所述服务端。当所述服务端接收到所述认证请求时,所述服务端根据非对称加密算法得到对应的公钥和私钥,存储所述私钥,将所述公钥发送给所述客户端。所述客户端接收所述公钥,并通过对称加密算法生成加密密钥。所述客户端可以先发送认证请求给所述服务端,然后再通过所述对称加密算法生成加密密钥,也可以先通过所述对称加密算法生成加密密钥,然后再发送认证请求给所述服务端。需要说明的是,所述对称加密算法包括但不限于DES(Data Encryption Standard,数据加密标准)、3DES、IDEA(International Data Encryption Algorithm)和AES(Advanced Encryption Standard,高级加密标准),所述非对称加密算法包括但不限于RSA、Elgamal和椭圆加密算法ECC。

加密单元23,用于通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥;

添加单元24,用于将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

当所述服务端得到所述加密密钥后,所述服务端通过所述加密密钥加密所述认证标识,并通过所述服务端发送的公钥加密所述加密密钥,得到加密后的所述认证标识和加密后的所述加密密钥,将加密后的所述认证标识和加密后的所述加密密钥添加至所述图像中。

进一步地,所述客户端将加密后的所述认证标识添加至所述图像中的具体过程为:所述客户端将加密后的所述认证标识添加至所述图像附属的头文件Header中,具体添加至所述Header中名为Make的Tag信息中。需要说明的是,所述图像的header区域与数据区域相互独立,因此在将所述认证标识添加至所述图像中后,不影响所述图像数据区域的内容。在将所述加密后的所述认证标识添加至所述图像中后,所述客户端使用所述公钥加密所述加密密钥,将加密后的所述加密密钥添加至所述图像附属的头文件Header中,具体添加至所述Header中名为MODEL的Tag信息中。当所述服务端得到所述图像后,在所述图像的Header中名为Make的Tag信息中提取加密后的所述认证标识,在所述图像的Header中名为MODEL的Tag信息中提取加密后的所述加密密钥。当所述服务端得到加密后的所述加密密钥后,所述服务端通过与所述公钥对应的私钥解密加密后的所述加密密钥,得到所述加密密钥,通过解密所得的所述加密密钥解密在所述Make的Tag信息中提取的所述认证标识,得到解密后的所述认证标识。所述服务端拆分所述认证标识,得到所述认证标识中的设备名称、冗余字符串和哈希指纹。

本实施例通过加密密钥对认证标识进行加密,并对加密所述认证标识的加密进行加密,防止所述图像被非法分子篡改,保证了所述图像在传输过程中的安全性。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1