代码是关于基于fabric区块链的医疗数据共享系统,具体的代码放在了github上:链接

目录

  • 一、功能介绍
  • 一、运行步骤
  • 三、代码介绍
    • 1. 区块链模块介绍
    • 2. 加密模块介绍

一、功能介绍

  1. 产生数据:个人在医院就诊、健康中心体检、使用监测手环时均会产生大量健康医疗数据,在经过个人同意的前提下,机构对这些数据进行采集和处理。
  2. 数据存储:机构对数据进行分级,按照个人设置的访问控制策略,使用分级加密算法的加密步骤对数据进行加密并存储。
  3. 数据注册:机构将数据信息(包括数据描述、加密密钥、相关机构、相关个人、访问控制策略和数据地址等)上传至数据共享平台,平台计算出数据价值,并将数据信息和数据价值存储至区块链上。
  4. 密钥申请:使用者在加入数据共享平台时,可以根据自身属性(如医院、保险机构等)向数据平台申请密钥,属性授权机构验证其身份后,使分级加密算法的密钥生成方法生成对应密钥,并向使用者发送。
  5. 数据请求:使用者在共享平台检索数据,向平台发送数据请求,平台收到请求后向使用者返回数据信息,扣除使用者贡献点,奖励各参与方贡献点,并记录此次数据共享。
  6. 数据发送:使用者收到数据信息后,根据数据地址获取密文数据,使用分级加密算法的解密步骤解密密文。
  7. 使用日志查询:个人和机构可以通过向共享平台发送请求来查询数据使用情况。
    注:分级加密算法在3.2节有介绍

一、运行步骤

以阿里云环境,介绍代码具体使用:

  1. 首先要把fabric1.4环境装好,具体可以见这个博客
  2. 进入阿里云后,下载代码到文件夹
  3. 每次重新启动阿里云服务器都需要注释下面这句话,否则网络会启动失败
vi /etc/resolv.conf
# 注释掉下面这句话
options timeout:2 attempts:3 rotate single-request-reopen
  1. 清理环境,为防止之前启动的容器和网络影响这次运行,首先要删除之前的容器和网络,进入目录medical-data后:
# 查看容器
docker ps
# 清理容器
docker rm -f $(docker ps -aq) # 或者直接调用  ./stopFabric.sh
# 查看网络
docker network ls
# 清理网络
docker prune
  1. 进入目录medical-data,执行启动脚本
./startFabric.sh java
  1. 启动区块链网络的时候,可以通过下面这个命令查看所有容器的日志,最好是另外打开一个窗口看日志

进入目录commercial-paper/organization/magnetocorp/configuration/cli,输入下面的命令,可以同时汇总并监视各个容器的日志

./monitordocker.sh net_byfn
  1. 当出现下面这段话后,说明区块链网络启动成功,而且链码安装并初始化成功


这个网址可以看到数据库,最下面就是我们新建的目录,链码在初始化的时候,创建了100个用户

  1. 启动http服务端
cd java
mvn test

这样就是服务端启动成功了

  1. http服务端启动成功之后,可以通过客户端直接访问服务端,所有方法都是通过 POST方法访问

访问方法有两种:
1. 第一种是直接通过输入url访问,如下图:

2. 第二种是通过代码访问,具体代码在medicalDataSharing\fabric\scripts\fabric-samples\medical-data\java\src\main\java\org\example\HttpClient.java,把url替换成自己阿里云的url就可以了,直接运行main函数,main函数把每一种请求都写了一遍,可以按需调用,不需要的注释掉就可以了

下图是运行了创建用户的方法,返回了用户的id是100

三、代码介绍

代码是关于基于fabric区块链的医疗数据共享系统,系统中主要有两个模块,加密魔模块和区块链模块:

1. 区块链模块介绍

区块链有分为两个组织,共识机制采用的是kafka

2. 加密模块介绍

加密使用的是cp-abe,是在此人源码的基础之上,加了三个功能:

  1. 对文件分级解密

将访问策略分为两级,低敏感数据的访问策略对应最左边树,高敏感数据访问策略对应中间的树,将他们合并为最右边的访问树,根节点使用2of2连接。合并之后,以根节点为根的树是高敏感访问树,以左孩子节点为根的树是低敏感访问树。有时候也可以合并为根节点是1of2,这时以根节点为根的树是低敏感访问树,以左孩子节点为根的树是高敏感访问树。

  1. 将属性授权中心拆分成两个,分别为属性验证中心和密钥生成中心以避免密钥托管,两个中心交互生成用户私钥,其实应该这两个授权中心放在两个节点上,但为了方便,我把它还是放在一个节点上
  2. 在密钥生成过程中,加入用户生成的随机数,授权中心返回给用户的是伪密钥,只有用户知道随机数,可以把它恢复成真实密钥

整个加密步骤:




时序图:

fabric+cpabe加密的医疗数据共享代码(分级加密、多授权中心)相关推荐

  1. php7 加密扩展,一个PHP7 代码的加密扩展,

    一个PHP7 代码的加密扩展是PHP7代码的加密扩展, PHP7栏目介绍如何加密扩展 推荐:PHP7 介绍 一个简洁高效的跨 特点 简单快速,实际测量后几乎不影响性能.它与其他扩展兼容,如OPcach ...

  2. TLS实现代码段加密

    刚开始见到这个思路是看到周大师用这个东西做的免杀,当时感觉这个想法很好,但是由于当时对PE结构了解的少,看到二进制的东西就打怵,所以当时也没能成功的去实现这个思路,只是简单的记录了一下TLS的特性,直 ...

  3. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)...

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  4. druid ssh加密 java mysql_springboot 整合druid数据库密码加密功能的实现代码

    在之前给大家介绍过Springboot Druid 自定义加密数据库密码的几种方案,感兴趣的朋友可以点击查看下,今天通过本文给大家介绍springboot 整合druid数据库密码加密功能,具体内容如 ...

  5. python代码加密cython_利用Cython对python代码进行加密

    利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...

  6. 揭秘!业界创新的代码仓库加密技术

    简介: 原理与演示. 01 / 什么是代码加密? 云端加密代码服务是云效团队的自研产品,是目前国内率先支持代码加密的托管服务,也是目前世界范围内率先基于原生Git实现加密方案的代码托管服务. 通过在云 ...

  7. cython加密代码python_利用Cython对python代码进行加密

    利用Cython对python代码进行加密 Cython是属于PYTHON的超集,他首先会将PYTHON代码转化成C语言代码,然后通过c编译器生成可执行文件.优势:资源丰富,适合快速开发.翻译成C后速 ...

  8. 为PHP代码在线加密

    iwei.me  提供PHP代码在线加密编译服务 请看  http://iwei.me/php.html PHP代码在线加密编译使用bcompiler php扩展实现,为想保护自己代码的程序员们提供加 ...

  9. 异或加密的java算法_Java使用异或运算实现简单的加密解密算法实例代码

    Java简单的加密解密算法,使用异或运算 实例1: package cn.std.util; import java.nio.charset.Charset; public class DeEnCod ...

最新文章

  1. 面试官:消息队列这些我必问!
  2. (002)RN开发之第一个项目以及真机运行
  3. RabbitMQ之消息持久化
  4. PHP文件操作常用函数总结
  5. SpringBoot+Swagger2实现可视化API文档流程
  6. 如何防止token被拦截_Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
  7. Android RaingBar评分条的使用
  8. C语言——顺序栈(Stack)
  9. Android 系统(102)---Android APP耗电优化
  10. pandas 转化np数据_利用Python进行数据分析(语法篇)
  11. Linux篇---Grep和正则匹配
  12. java 注解解析_Java知识点总结(注解-解析注解)
  13. 凸优化第六章逼近与拟合 6.4鲁棒逼近
  14. 转fatfs 文件系统选择
  15. Gitlab:从其它项目组里导入一个项目
  16. 固定效应还是随机效应?
  17. 提问的智慧/ 如何优雅的提问
  18. 服务器多个网站对应多个域名,多个域名指向同一个网站怎么样设置更合理?
  19. 太白山北坡旅游路线登顶攻略
  20. 2.63-将下面的C函数代码补充完整。函数srl用算术右移(由值xsra给出)来完成逻辑右移,后面的其他操作不包括右移或者除法。

热门文章

  1. 暴力破解电脑开机密码(值得一学,嘻嘻)
  2. 云里计算机,单词云里轰电脑版
  3. 阿里半跪过,任正非差点跳楼,京东被骗光钱:成年人的生活哪有容易二字?...
  4. Java学习笔记(未完成.....)
  5. 生词本 python
  6. vue创建项目都忘记了怎么办
  7. splinterlands链游开发 链游开发app 链游开发公司
  8. 生物信息学python书籍推荐_求一份学习生物信息学的书单?
  9. mac 开机卡在进度条的问题
  10. Abaqus二次开发——UEL资源大放送!!!