精华内容
下载资源
问答
  • 可隐藏搜索模式的对称可搜索加密方案,陆海宁,,在云计算环境中,可搜索加密技术可以让云服务器直接在用户的数据密文上进行关键词搜索,同时尽量不泄露用户的数据和搜索条件信息
  • Cash的OXT方案 项目组织结构 文件夹tsets_bloom_filter: 用于存放保存有tsets的bloomfilter 文件夹output_keys: 用于存放密钥 文件夹testset: 测试数据集 文件夹lib: 存放jpbc相关的jar包 文件夹params: 存放双线性...
  • 根据使用密码体制的不同,介绍了可搜索加密的分类,将其分为对称可搜索加密和非对称可搜索加密。基于这种分类,首先介绍了典型方案,之后从可搜索加密的语句表达能力和安全性2方面进行介绍,并指出了该领域当前研究...
  • 我们将大数据存储在云服务器上,为了保护数据隐私,通常会选择先将数据加密后再上传... 虽然对称可搜索加密比较快,但在多用户数据共享方面,公钥可搜索加密的应用场景比对称可搜索加密更为广阔。双线性对(Bilinea...

      我们将大数据存储在云服务器上,为了保护数据隐私,通常会选择先将数据加密后再上传。可搜索加密(Searchable Encryption)研究如何在密文上进行关键字搜索,分为对称可搜索加密(Searchable Symmetric Encryption)和公钥可搜索加密(Public-key Encryption with Keyword Search,PEKS)。

           虽然对称可搜索加密比较快,但在多用户数据共享方面,公钥可搜索加密的应用场景比对称可搜索加密更为广阔。双线性对(Bilinear Pairing)作为构造PEKS的常用工具,本文将贴出其相应开源函数库Pairing-based cryptography library (pbc library,链接)的python版本示例(pypbc), 目标是方便大家在做学术研究工程实验时能够对pypbc进行快速入门。 (注: 本文代码以2004年Boneh等人的方案为示例,仅面向研究人员,入门请结合该论文方案;因方案不能抵抗关键字猜测攻击,不保证商用安全性)

     

    实验环境

           pypbc 基于GMP PBC,安装可以参考64位Ubuntu14.04下配置PBC环境一文。先给出完整依赖关系,pbc依赖gmp,gmp依赖M4,bison,flex,我们先安装M4、flex和bison。

    
     
    1. sudo apt-get install M4

    2. sudo apt-get install flex

    3. sudo apt-get install bison

    安装gmp,下载https://gmplib.org/ ,转到下载目录运行如下命令。

    
     
    1. lzip -d gmp-6.1.0.tar.lz

    2. tar -zxvf gmp-6.1.0.tar

    3. cd gmp-6.1.0

    4.  
    5. ./configure

    6. make

    7. make check

    8. sudo make install

    接下来安装pbc, 下载https://crypto.stanford.edu/pbc/download.html ,转到下载目录运行如下命令。

    
     
    1. tar -zxvf pbc-0.5.14.tar.gz

    2. cd pbc-0.5.14

    3.  
    4. ./configure

    5. make

    6. sudo make install

    因为pypbc是用python3 语言,我们先安装python3和pip3。

    
     
    1. sudo apt-get install python3

    2. sudo apt-get install python3-pip

    我们运行如下命令,从GitHub上下载pypbc代码。

    git clone https://github.com/debatem1/pypbc

    转到下载目录,运行如下代码,具体过程我不太记得了,请参考pypbc/INSTALL文件里的描述。

    
     
    1. sudo python3 setup.py install

    2. sudo pip3 install pypbc

     

    Pypbc代码

           代码请结合2004年Boneh的论文方案来阅读,其中[params, g]公共参数,近来我在看学术论文时经常看到公共参数生成算法,该算法返回公共参数pp,pp作为方案其余各算法的隐含输入,这样写法是为了结合工程习惯。Pbc library公共参数生成算法中的qbits和rbits用法具体请阅读官方文档

    
     
    1. Generate type A pairing parameters and store them in p, where the

    2. group order r is rbits long, and the order of the base field q is

    3. qbits long. Elements take qbits to represent.

    我对这块不熟悉,参数是根据官方示例设置的(再次强调代码示例不保证商用安全性)。

    
     
    1. #coding=utf-8

    2.  
    3. from pypbc import *

    4. import hashlib

    5.  
    6. Hash1 = hashlib.sha256

    7. Hash2 = hashlib.sha256

    8.  
    9. # 公钥可搜索加密-2004-Boneh

    10.  
    11.  
    12. # 密钥生成算法,输入安全参数qbits和rbits,返回[params, g, pk, sk]

    13. def KeyGen(qbits=512, rbits=160):

    14. params = Parameters(qbits=qbits, rbits=rbits)

    15. pairing = Pairing(params)

    16. g = Element.random(pairing, G2)

    17. sk = Element.random(pairing, Zr)

    18. pk = Element(pairing, G2, value = g ** sk)

    19. return [params, g, sk, pk]

    20.  
    21.  
    22. # PEKS算法,输入公共参数[params, g],公钥pk,关键字word,返回[A, B] (具体参考论文)

    23. def PEKS(params, g, pk, word):

    24. pairing = Pairing(params)

    25. hash_value = Element.from_hash(pairing, G1, Hash1(str(word).encode('utf-8')).hexdigest())

    26. r = Element.random(pairing, Zr)

    27. temp = pairing.apply(hash_value, pk ** r)

    28. return [g ** r, Hash2(str(temp).encode('utf-8')).hexdigest()]

    29.  
    30.  
    31. # 陷门生成算法,输入公共参数[params],私钥sk,待查关键字word,返回陷门td

    32. def Trapdoor(params, sk, word):

    33. pairing = Pairing(params)

    34. hash_value = Element.from_hash(pairing, G1, Hash1(str(word).encode('utf-8')).hexdigest())

    35. return hash_value ** sk

    36.  
    37.  
    38. # 测试算法,输入公共参数[params],公钥pk,S=[A, B],陷门td,返回布尔值True/False

    39. def Test(params, pk, cipher, td):

    40. pairing = Pairing(params)

    41. [A, B] = cipher

    42. td = Element(pairing, G1, value=str(td))

    43. temp = pairing.apply(td, A)

    44. temp = Hash2(str(temp).encode('utf-8')).hexdigest()

    45. return temp == B

     

    测试代码

    
     
    1. if __name__ == '__main__':

    2. [params, g, sk, pk] = KeyGen(512, 160)

    3. cipher = PEKS(params, g, pk, "GQW")

    4. td = Trapdoor(params, sk, "GQW")

    5. assert(Test(params, pk, cipher, td))

    6. td = Trapdoor(params, sk, "GQK")

    7. assert(not Test(params, pk, cipher, td))

     

    官方示例

    pypbc的详细用法请参考官方示例(链接),测试代码中给出了BLS签名实现。共勉,愿科研人员前途似锦!

     

    Acknowledgements

    The main author of the PBC library is Ben Lynn.

    Thanks to the many others who have contributed, including Hovav Shacham, Matt Steiner, Joe Cooley, Rob Figueiredo, Roger Khazan, Dmitry Kosolapov, John BethencourtPaul Miller, Michael Cheng, Ian Goldberg, Adam Aviv, Adam McLaurin, and Michael Adjedj.

     

    Reference

    64位Ubuntu14.04下配置PBC环境

    Pypbc的GitHub地址

    https://crypto.stanford.edu/pbc/download.html

    Dan B, Crescenzo G D, Ostrovsky R, et al. Public Key Encryption with Keyword Search[C]// International Conference on the Theory and Applications of Cryptographic Techniques. 2004.

    转载于:https://blog.csdn.net/weixin_34318272/article/details/91811741

    展开全文
  • PSSE 短语可搜索对称加密评估
  • 传统的对称可搜索加密解决了云存储中加密数据的检索问题,但是没有考虑到检索的公平性问题,即用户在支付了服务费后服务器没有返回检索结果或返回错误的检索结果的情况。随着区块链的出现,基于比特币的对称可搜索加密...
  • 云存储系统的多用户可搜索对称加密方案
  • 为了能在云计算环境下安全地使用可搜索加密技术,针对近几年来可搜索加密技术的研究成果,总结了云计算环境下对称/非对称可搜索加密技术的主要算法模型与安全模型,分析了各类安全方案的安全缺陷,并分析了基本可...
  • 可搜索加密概述(2)

    2020-06-14 21:15:30
    另一种对称可搜索加密的构造方案是SSE-1,需要构造关键词-文件的索引并上传至服务器,而Z-IDX的索引是文件-关键词的,这是两种索引构建思想。SSE-1避免了关键词查询时逐个文件进行检索,检索时间复杂度是O(1),...

    4.3 SSE-1方案
    另一种对称可搜索加密的构造方案是SSE-1,需要构造关键词-文件的索引并上传至服务器,而Z-IDX的索引是文件-关键词的,这是两种索引构建思想。SSE-1避免了关键词查询时逐个文件进行检索,检索时间复杂度是O(1),但是当文件更新时需要重新构造整个索引,开销较大。而Z-IDX的文件-关键词索引查询时需要遍历整个文件,时间复杂度是O(n),但是更新文件时只需要修改对应文件的索引即可。

    5,对称可搜索加密的拓展研究

    5.1 文件动态更新
    基于关键词-文件思想的构建方案有较高的查询效率,但文件更新时需要重新构建整个索引,开销较大;基于文件-关键词思想的构建方案查询时需要遍历整个文件,效率较低,但文件更新时只需要修改对应文件结构体,速度较快。如何将两者的优势结合起来,是学者们在努力研究的一个问题。

    5.2 多关键词和模糊关键词搜索
    如何对以逻辑连接词连接的多个关键词进行检索,以及如何识别相近词汇实现模糊搜索,现有方法多是使用布隆过滤器,通过预先为关键词生成通配检索形式,将包含通配符的关键词检索转化为精确匹配检索。

    5.3 相关性排序
    经典的方案中没有实现对搜索结果与关键词的相关性排序,返回用户的一个文件列表,用户真正需要的可能仅仅是其中一个,需要把文件列表全部解密,增加用户的处理开销。相关性可以依据关键词在文件中的词频定义,也可以由数据拥有者定义关键词与文件的相关度,和索引一起上传服务器。

    ——————————
    参考文献:李经纬, 贾春福, 刘哲理,等. 可搜索加密技术研究综述[J]. 软件学报, 2015, 26(1):109-128.

    展开全文
  • 具有优化的I / O效率的前向私有可搜索对称加密
  • 为了能在云计算环境下安全地使用可搜索加密技术,针对近几年来可搜索加密技术的研究成果,总结了云计算环境下对称/非对称可搜索加密技术的主要算法模型与安全模型,分析了各类安全方案的安全缺陷,并分析了基本可...
  • 针对可搜索公钥加密、可搜索对称加密这2种可搜索加密类型,分别介绍了近几年来学术界的主要成果及其存在的问题、解决方法。在可搜索公钥加密领域,主要介绍了高安全条件下降低检索复杂度的方法;在可搜索对称加密...
  • 但是现有的基于属性的可搜索加密方案无法实现文件的动态更新操作,针对此问题,采用对称可搜索加密的思想来建立索引,这种通过数组和链表来存储索引信息的方式可以实现只搜索一次就能获得包含此关键字的所有文件,...
  • 针对传统加密方法在搜索云服务器数据时存在的效率不高和密钥泄露问题,提出了一种具有控隐私保护搜索函数的对称谓语加密算法。首先,密钥所有者公布一些公共参数,并生成主密钥;然后,服务器端检查密文的属性是否...
  • 关于可搜索加密的专利
  • 为了弥补保序加密算法的隐私泄漏问题,结合对称可搜索加密技术基本思想,提出一种新型的具有隐私保护功能的范围数据加密查询算法。在该算法中,将数字范围转换为特殊关键字并放入布隆过滤器进行存储与命中判定,其中...
  • 在本文中,我们提出了一种新颖的面向服务的可验证的可搜索对称加密框架,称为PVSAE。 PVSAE通过IND-CKA安全和search.pattern私密性两个正式的安全属性,为外包的加密数据提供强大的支持。 我们的框架支持两个具体...
  • 摘要:多用户可搜索加密(MSE)允许用户以一种方式加密其文件,以使这些文件可以被该用户授权的其他用户搜索。 MSE最直接的应用是云存储,它使用户能够安全地将其文件外包给不受信任的云存储提供商,而不会牺牲共享...
  • 该插件的目的是加密数据,但仍允许搜索具有字符串值的字段。 该插件依赖于Node crypto模块。 加密和解密在保存和查找过程中透明进行。 尽管此插件用于任何类型的单个字段,但请注意,对于非字符串字段,加密后...
  • 引言:本文主要解决Java中用AES加密及解密,同时通过Python脚本对Java加密后的字符进行解密的操作。 由于近期工作中用到需要使用Java对一串密钥进行加密,并且后台通过Python语言读取加密后的密钥并解密,搜索了...

     

    引言:本文主要解决Java中用AES加密及解密,同时可通过Python脚本对Java加密后的字符进行解密的操作。

    由于近期工作中用到需要使用Java对一串密钥进行加密,并且后台通过Python语言读取加密后的密钥并解密,搜索了很多文章,索性最后实现了,自己整理一下。

     

    Java语言实现AES加密及解密

      1 import java.io.IOException;
      2 import java.io.UnsupportedEncodingException;
      3 import java.security.InvalidAlgorithmParameterException;
      4 import java.security.InvalidKeyException;
      5 import java.security.NoSuchAlgorithmException;
      6 
      7 import javax.crypto.BadPaddingException;
      8 import javax.crypto.Cipher;
      9 import javax.crypto.IllegalBlockSizeException;
     10 import javax.crypto.NoSuchPaddingException;
     11 import javax.crypto.spec.IvParameterSpec;
     12 import javax.crypto.spec.SecretKeySpec;
     13 
     14 import org.apache.commons.lang.StringUtils;
     15 
     16 import sun.misc.BASE64Decoder;
     17 import sun.misc.BASE64Encoder;
     18 
     19 /**
     20  * <p>Title: TestAES3</p>
     21  * <p>Description: </p>
     22  * <p>Copyright: Copyright (c) 2012 All rights reserved.</p>
     23  * <p>Company: Neusoft Corporation, China, Ltd.</p>
     24  * @author chendch
     25  *
     26  */
     27 public class TestAES3
     28 {
     29   private String ALGO      = "AES";
     30   private String ALGO_MODE = "AES/CBC/NoPadding";
     31   private String akey      = "keyskeyskeyskeys";
     32   private String aiv       = "keyskeyskeyskeys";
     33   private String padding   = " ";
     34   private int    blockSize = 16;
     35 
     36   /**
     37    * @param content
     38    * @return password
     39    * @throws NoSuchAlgorithmException
     40    * @throws NoSuchPaddingException
     41    * @throws UnsupportedEncodingException 
     42    * @throws InvalidAlgorithmParameterException 
     43    * @throws InvalidKeyException 
     44    * @throws BadPaddingException 
     45    * @throws IllegalBlockSizeException 
     46    */
     47   public String encrypt(String content)
     48     throws NoSuchAlgorithmException, NoSuchPaddingException, UnsupportedEncodingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException,
     49     BadPaddingException
     50   {
     51     String encryptContent = content;
     52     if (encryptContent.length() < blockSize)
     53     {
     54       encryptContent = StringUtils.rightPad(content, blockSize, padding);
     55       System.out.println("补位后:" + encryptContent);
     56     }
     57 
     58     Cipher cipher = Cipher.getInstance(ALGO_MODE);
     59     SecretKeySpec keyspec = new SecretKeySpec(akey.getBytes("utf-8"), ALGO);
     60     IvParameterSpec ivspec = new IvParameterSpec(aiv.getBytes("utf-8"));
     61     cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
     62     byte[] byteEncode = encryptContent.getBytes("utf-8");
     63     byte[] byteAES = cipher.doFinal(byteEncode);
     64 
     65     String AESEncode = new String(new BASE64Encoder().encode(byteAES));
     66 
     67     return AESEncode;
     68   }
     69 
     70   /**
     71    * @param content
     72    * @return content
     73    * @throws NoSuchAlgorithmException
     74    * @throws NoSuchPaddingException
     75    * @throws InvalidKeyException
     76    * @throws InvalidAlgorithmParameterException
     77    * @throws IllegalBlockSizeException
     78    * @throws BadPaddingException
     79    * @throws IOException
     80    */
     81   public String decrypt(String content)
     82     throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException,
     83     BadPaddingException, IOException
     84   {
     85     byte[] byte_content = new BASE64Decoder().decodeBuffer(content);
     86 
     87     Cipher cipher = Cipher.getInstance(ALGO_MODE);
     88     SecretKeySpec keyspec = new SecretKeySpec(akey.getBytes("utf-8"), ALGO);
     89     IvParameterSpec ivspec = new IvParameterSpec(aiv.getBytes("utf-8"));
     90 
     91     cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
     92 
     93     byte[] byte_decode = cipher.doFinal(byte_content);
     94     String AES_decode = new String(byte_decode, "utf-8");
     95     return AES_decode.trim();
     96   }
     97 
     98   /**
     99    * @param args
    100    * @throws NoSuchAlgorithmException
    101    * @throws NoSuchPaddingException
    102    * @throws BadPaddingException 
    103    * @throws IllegalBlockSizeException 
    104    * @throws InvalidAlgorithmParameterException 
    105    * @throws InvalidKeyException 
    106    * @throws IOException 
    107    */
    108   public static void main(String[] args)
    109     throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException,
    110     BadPaddingException, IOException
    111   {
    112     TestAES3 testAES3 = new TestAES3();
    113     String content = "chenduoc";
    114     System.out.println("加密前:" + content);
    115 
    116     String encryptContent = testAES3.encrypt(content);
    117     System.out.println("加密后:" + encryptContent);
    118 
    119     String decryptContent = testAES3.decrypt(encryptContent);
    120     System.out.println("解密后:" + decryptContent);
    121   }
    122 }

     

    Python实现AES加密及解密

    #!/usr/bin/python
    #coding=utf-8
    
    from Crypto.Cipher import AES
    import base64
    
    BLOCK_SIZE = 16
    PADDING = " "
    key = "keyskeyskeyskeys"
    iv = "keyskeyskeyskeys"
    
    pad_it = lambda s : s+(BLOCK_SIZE - len(s)) * PADDING
    
    def encrypt(content):
        generator = AES.new(key, AES.MODE_CBC, iv)  
        encrypt_content = generator.encrypt(pad_it(content))
        encode_content = base64.b64encode(encrypt_content)
        
        return encode_content
    
    def decrypt(content):  
        generator = AES.new(key, AES.MODE_CBC, iv)  
        decode_content = base64.b64decode(content)
        decrypt_content = generator.decrypt(decode_content)
    
        return decrypt_content.rstrip(PADDING)
    
    content = "neteye"
    print "加密前:",content
    
    encrypt_contnet = encrypt(content)
    print "加密后:",encrypt_contnet
    
    decrypt_content = decrypt(encrypt_contnet)
    print "解密后:",decrypt_content

    注意点:Java中定义的key和iv变量和python中定义的必须一致,且加密的字符串需满足16位或24位等,不满足时需要进行补位,以上程序都已实现且可用。

    转载于:https://www.cnblogs.com/chen-dch/p/7716668.html

    展开全文
  • 首先,我们描述了构建支持二进制搜索的可搜索对称加密(SSE)方案的方法。 其次,我们提出了一种新颖的EPKS框架,并通过修改Shen等人的安全概念来提供纯文本隐私和谓词隐私的正式安全定义。 2009] ..第三,在提出的...
  • Boneh的PEKS的python实现

    2020-02-25 18:44:36
    可搜索加密(Searchable Encryption)研究如何在密文上进行关键字搜索,分为对称可搜索加密(Searchable Symmetric Encryption)和公钥可搜索加密(Public-key Encryption with Keyword Search,PEKS)。 虽然对称...

    我们将大数据存储在云服务器上,为了保护数据隐私,通常会选择先将数据加密后再上传。可搜索加密(Searchable Encryption)研究如何在密文上进行关键字搜索,分为对称可搜索加密(Searchable Symmetric Encryption)和公钥可搜索加密(Public-key Encryption with Keyword Search,PEKS)。

       虽然对称可搜索加密比较快,但在多用户数据共享方面,公钥可搜索加密的应用场景比对称可搜索加密更为广阔。双线性对(Bilinear Pairing)作为构造PEKS的常用工具,本文将贴出其相应开源函数库Pairing-based cryptography library (pbc library,链接)的python版本示例(pypbc), 目标是方便大家在做学术研究工程实验时能够对pypbc进行快速入门。 (注: 本文代码以2004年Boneh等人的方案为示例,仅面向研究人员,入门请结合该论文方案;因方案不能抵抗关键字猜测攻击,不保证商用安全性)
    

    实验环境
    pypbc 基于GMP 和PBC,安装可以参考64位Ubuntu14.04下配置PBC环境一文。先给出完整依赖关系,pbc依赖gmp,gmp依赖M4,bison,flex,我们先安装M4、flex和bison。

    sudo apt-get install M4
    sudo apt-get install flex
    sudo apt-get install bison
    安装gmp,下载https://gmplib.org/ ,转到下载目录运行如下命令。

    lzip -d gmp-6.1.0.tar.lz
    tar -zxvf gmp-6.1.0.tar
    cd gmp-6.1.0

    ./configure
    make
    make check
    sudo make install
    接下来安装pbc, 下载https://crypto.stanford.edu/pbc/download.html ,转到下载目录运行如下命令。

    tar -zxvf pbc-0.5.14.tar.gz
    cd pbc-0.5.14

    ./configure
    make
    sudo make install
    因为pypbc是用python3 语言,我们先安装python3和pip3。

    sudo apt-get install python3
    sudo apt-get install python3-pip
    我们运行如下命令,从GitHub上下载pypbc代码。

    git clone https://github.com/debatem1/pypbc
    转到下载目录,运行如下代码,具体过程我不太记得了,请参考pypbc/INSTALL文件里的描述。

    sudo python3 setup.py install
    sudo pip3 install pypbc

    Pypbc代码
    代码请结合2004年Boneh的论文方案来阅读,其中[params, g]是公共参数,近来我在看学术论文时经常看到公共参数生成算法,该算法返回公共参数pp,pp作为方案其余各算法的隐含输入,这样写法是为了结合工程习惯。Pbc library公共参数生成算法中的qbits和rbits用法具体请阅读官方文档,

    Generate type A pairing parameters and store them in p, where the
    group order r is rbits long, and the order of the base field q is
    qbits long. Elements take qbits to represent.
    我对这块不熟悉,参数是根据官方示例设置的(再次强调代码示例不保证商用安全性)。

    #coding=utf-8

    from pypbc import *
    import hashlib

    Hash1 = hashlib.sha256
    Hash2 = hashlib.sha256

    公钥可搜索加密-2004-Boneh

    密钥生成算法,输入安全参数qbits和rbits,返回[params, g, pk, sk]

    def KeyGen(qbits=512, rbits=160):
    params = Parameters(qbits=qbits, rbits=rbits)
    pairing = Pairing(params)
    g = Element.random(pairing, G2)
    sk = Element.random(pairing, Zr)
    pk = Element(pairing, G2, value = g ** sk)
    return [params, g, sk, pk]

    PEKS算法,输入公共参数[params, g],公钥pk,关键字word,返回[A, B] (具体参考论文)

    def PEKS(params, g, pk, word):
    pairing = Pairing(params)
    hash_value = Element.from_hash(pairing, G1, Hash1(str(word).encode(‘utf-8’)).hexdigest())
    r = Element.random(pairing, Zr)
    temp = pairing.apply(hash_value, pk ** r)
    return [g ** r, Hash2(str(temp).encode(‘utf-8’)).hexdigest()]

    陷门生成算法,输入公共参数[params],私钥sk,待查关键字word,返回陷门td

    def Trapdoor(params, sk, word):
    pairing = Pairing(params)
    hash_value = Element.from_hash(pairing, G1, Hash1(str(word).encode(‘utf-8’)).hexdigest())
    return hash_value ** sk

    测试算法,输入公共参数[params],公钥pk,S=[A, B],陷门td,返回布尔值True/False

    def Test(params, pk, cipher, td):
    pairing = Pairing(params)
    [A, B] = cipher
    td = Element(pairing, G1, value=str(td))
    temp = pairing.apply(td, A)
    temp = Hash2(str(temp).encode(‘utf-8’)).hexdigest()
    return temp == B

    测试代码
    if name == ‘main’:
    [params, g, sk, pk] = KeyGen(512, 160)
    cipher = PEKS(params, g, pk, “GQW”)
    td = Trapdoor(params, sk, “GQW”)
    assert(Test(params, pk, cipher, td))
    td = Trapdoor(params, sk, “GQK”)
    assert(not Test(params, pk, cipher, td))

    官方示例
    pypbc的详细用法请参考官方示例(链接),测试代码中给出了BLS签名实现。共勉,愿科研人员前途似锦!

    Acknowledgements
    The main author of the PBC library is Ben Lynn.

    Thanks to the many others who have contributed, including Hovav Shacham, Matt Steiner, Joe Cooley, Rob Figueiredo, Roger Khazan, Dmitry Kosolapov, John Bethencourt, Paul Miller, Michael Cheng, Ian Goldberg, Adam Aviv, Adam McLaurin, and Michael Adjedj.

    Reference
    64位Ubuntu14.04下配置PBC环境

    Pypbc的GitHub地址

    https://crypto.stanford.edu/pbc/download.html

    Dan B, Crescenzo G D, Ostrovsky R, et al. Public Key Encryption with Keyword Search[C]// International Conference on the Theory and Applications of Cryptographic Techniques. 2004.

    转载于:https://my.oschina.net/keyven/blog/1600820

    展开全文
  • 现有可搜索加密方案通常索引的构建、检索效率不高,数据节点的维护不便,难以适应分布式密文检索要求。针对现有密文检索方案出现的一些问题,提出了可拆分密文倒排索引架构,改善了密文索引的并行构建性能,简化了...
  • 常见加密方式

    2019-11-25 16:03:37
    加密方式 对称加密和非对称加密 对称加密加密和解密是同一个密(例如:AES加密和DES加密) 非对称加密加密和解密是两个不同的密钥,通常有公钥和私钥之分... 通过百度搜索在线加密解密,选择需...
  • RC4 加密算法

    2021-03-01 14:15:59
    目录 文章目录目录RC4RC4 的...RC4 算法的特点是算法简单,运行速度快,而且密钥长度是变的,变范围为 1-256Byte(8-2048Bit),在如今技术支持的前提下,当密钥长度为 128Bit 时,暴力搜索密钥就不可行了。所以,
  • 数据的加密与解密

    千次阅读 2013-02-08 17:20:52
    本文来源于对维基百科的搜索、摘要和整理,同时也参考了其他搜索引擎的搜索结果。... 在现代密码学中,加密方法大致分为对称密钥加密(对称加密)和公开密钥加密(非对称加密)。   一. 对称加密(Symmetric-key a
  • JAVA常用加密(一)

    2017-01-03 08:43:04
    在写代码的时候经常用到加密的方法,加密算法一般分为以下几种 ...二、对称加密:一般有DES、3DES、AES 均使用 三、非对称加密:RSA、DSA 一般用于数据量不大的重要信息 四、单向加密:MD2、MD5、SHA、S
  • 有多种加密技术确保数据的安全性,但新技术的搜索范围是无限的,基于模式的加密技术是网络安全领域研究最少的领域之一。 当考虑几何形状时,可以将与该形状唯一相关的各种属性用作加密参数。 在提出的工作中,...
  • 配置的对称/非对称加密 跨平台剪贴板支持 从“ .passboxrc”配置文件配置诸如密码箱文件位置之类的设置 先决条件 目的是支持尽可能多的OS,仅针对OSX和Linux进行测试,但是通过使用Cygwin或MSYS可以潜在地获得...
  • 一个可入侵的,脱机优先的Markdown编辑器,用于笔记,代码段和写作...键盘友好且可搜索 键盘快捷键可用于许多操作。 使用纯文本或正则表达式搜索文档。 上下文切换 专注于#work或#play ? 应用全局过滤器以仅查看给定时

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

对称可搜索加密