1.一种基于区块链的电子病历访问方法,其特征在于,包括:
第一客户端生成第一公钥和第一私钥;第二客户端生成第二公钥和第二私钥;所述第一客户端获取第一对称密钥和明文电子病历;所述第一客户端根据所述第一对称密钥对所述明文电子病历进行对称加密生成第一密文;所述第一客户端根据所述第一公钥对所述第一对称密钥进行加密生成第二密文;所述第一客户端将所述第一密文和所述第二密文上传至IPFS网络获得相对应的第一哈希和第二哈希;所述第一客户端将第一身份标识、所述第一哈希和所述第二哈希封装为交易,使用所述第一私钥签名后发布至区块链网络;
所述第一客户端还根据所述第一身份标识生成非对称同态加密公钥和非对称同态加密私钥;所述第一客户端根据所述非对称同态加密公钥对所述第一私钥进行加密生成第三密文;所述第一客户端根据所述非对称同态加密公钥对所述第一身份标识进行加密生成匿名标识;所述第一客户端将所述匿名标识和所述第三密文封装为交易,使用所述第一私钥签名后发布至所述区块链网络;
第二客户端获取第一身份标识和第二身份标识,并对所述第一身份标识和所述第二身份标识进行校验;所述第二客户端使用第一哈希函数、第二哈希函数、第三哈希函数分别对所述第一身份标识和所述第二身份标识计算哈希值,当所述哈希值对应在权限数组相应位置上的值均大于0时,确认校验成功;所述权限数组是由认证中心在区块链网络中维护更新;
所述权限数组注册时,获取注册身份标识;使用所述第一哈希函数、所述第二哈希函数、所述第三哈希函数分别对所述注册身份标识计算哈希值,将其映射至所述权限数组中三个相应位置,并将所述位置的存储值进行加一操作;所述权限数组中每个所述存储值默认为0;所述权限数组注销时,获取注销身份标识;使用所述第一哈希函数、所述第二哈希函数、所述第三哈希函数分别对所述注销身份标识计算哈希值,将其映射至所述权限数组中三个相应位置,并将所述位置的存储值进行减一操作;
所述第二客户端根据所述第一身份标识向所述区块链网络发送请求,获取所述第一哈希和所述第二哈希;所述第二客户端根据所述第一哈希和所述第二哈希向所述IPFS网络发送请求,获取所述第一密文和所述第二密文;
所述第二客户端获取所述第一对称密钥;其中,所述第二客户端根据所述第一身份标识生成所述非对称同态加密公钥和所述非对称同态加密私钥;所述第二客户端根据所述非对称同态加密公钥对所述第一身份标识进行加密获得所述匿名标识;所述第二客户端根据所述匿名标识向所述区块链网络发起请求,获取所述第三密文;所述第二客户端根据所述非对称同态加密公钥对所述第二公钥进行加密获得第四密文;所述第二客户端将所述第二密文、所述第三密文和所述第四密文封装为交易,使用所述第二私钥签名后发布至所述区块链网络中进行重加密操作,获得第五密文;所述第二客户端根据所述非对称同态加密私钥对所述第五密文进行解密获得第六密文;所述第二客户端根据所述第二私钥对所述第六密文进行解密获得所述第一对称密钥;
所述第二客户端使用所述第一对称密钥对所述第一密文进行解密获得所述明文电子病历。
2.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1所述方法的步骤。
3.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,执行权利要求1所述的方法。