jjzjj

调库实现简单的AES,ECC,SHA-256,支持文本(txt)、图片(png)、音频(mp4)

一、设计要求在设计和实现系统时,选择调用了以下密码库:BouncyCastle(BC):用于实现椭圆曲线密码学(ECC)算法,确保系统安全传输密钥的过程。JavaCryptographyArchitecture(JCA):用于实现对称加密算法(如AES)和SHA-256哈希算法等,提供主流密码学算法的支持。支持的数据类型系统支持以下文件类型的加密和解密:文本文件(.txt):对文本内容进行加密和解密,保护敏感信息的安全。图片文件(.png):采用对称加密算法对图像数据进行加密,确保图像隐私不被泄露。音频文件(.mp4):对音频数据进行保护,通过密码学算法确保音频文件的机密性。系统的概述系统旨在

c++ - OpenSSL:AES CCM 256 位大文件加密 block :这可能吗?

我正在执行一项使用AESCCM模式(256位key长度)加密大文件的任务。其他用于加密的参数是:标签大小:8字节iv大小:12字节因为我们已经在使用OpenSSL1.0.1c,所以我也想用它来完成这项任务。文件的大小事先并不知道,它们可能非常大。这就是为什么我想按block读取它们并使用EVP_EncryptUpdate单独加密每个block,直到文件大小。不幸的是,仅当整个文件一次加密时,加密对我有效。如果我尝试多次调用它,我会从EVP_EncryptUpdate或奇怪的崩溃中得到错误。我使用gcc4.7.2在Windows7和UbuntuLinux上测试了加密。我找不到有关Open

c++ - 英特尔 C++ 编译器 ICC 似乎忽略了 SSE/AVX 设置

我最近下载并安装了适用于Linux的英特尔C++编译器ComposerXE2013,可免费用于非商业开发。http://software.intel.com/en-us/non-commercial-software-development我在Ivy桥系统(具有AVX)上运行。我有两个版本的函数做同样的事情。一个不使用SSE/AVX。另一个版本使用AVX。在GCC中,AVX代码比标量代码快大约四倍。但是,使用IntelC++编译器时性能要差得多。使用GCC我这样编译gccm6.cpp-om6_gcc-O3-mavx-fopenmp-Wall-pedantic使用Intel我这样编译ic

匹配JS和PHP中的SEC256K1键

我在团结起来时遇到了麻烦Ionux/phactorPHP库,以及Indutny/椭圆形JS库。一个库在灯服务器上使用,另一个库通过AmazonLambda的Nodejs使用。我与PHP库生成一个密钥对;签名SHA256哈希数据并将结果保存为JSON输出。$ec=KeyManager::instance()->getECKeysByHash($k='122e43fd75dd0492a259146ab5dfd5c6');return$response=['source'=>['message'=>$m='asd','hash'=>$h=hash('sha256',$m),'hash_signed'

c++ - 用于 DHE 交换的 OpenSSL 证书生成

我是安全和OpenSSL方面的初学者。我的目标是以编程方式生成一个证书,该证书通过Chrome所做的“过时​​的”羞辱。我用来生成的证书使用了AES_128_GCM和RSA,即使我尝试将密码列表设置为kEECDH:kEDH:!ADH:AES256-SHA256并且服务器上下文使用SSL_CTX_new(TLSv1_2_server_method());。基于thedocumentation中的示例我尝试了以下操作:X509*x=NULL;EVP_PKEY*pk=NULL;EVP_PKEY_CTX*ctx=NULL;EVP_PKEY*params=NULL;if(NULL==(param

c++ - 编译器 (gcc) 可以保证 c++ 循环吗?

我必须进行以下AVX操作:__m256perm,func;__m256in=_mm256_load_ps(inPtr+x);__m256acc=_mm256_setzero_ps();perm=_mm256_shuffle_ps(in,in,_MM_SHUFFLE(3,2,1,0));func=_mm256_load_ps(fPtr+0);acc=_mm256_add_ps(acc,_mm256_mul_ps(perm,func));perm=_mm256_shuffle_ps(in,in,_MM_SHUFFLE(2,3,0,1));func=_mm256_load_ps(fPtr+1

c++ - AVX2 根据条件将连续元素扩展为稀疏 vector ? (如 AVX512 VPEXPANDD)

有谁知道如何向量化以下代码?uint32_tr[8];uint16_t*ptr;for(intj=0;j这基本上是一个屏蔽的收集操作。自动矢量化器无法处理这个问题。如果ptr是一个uint32_t*它应该可以直接用_mm256_mask_i32gather_epi32实现.但即便如此,你如何生成正确的索引vector?并且无论如何只使用打包加载并洗牌结果(需要类似的索引vector)会不会更快? 最佳答案 更新答案:主要代码段已重写为函数和解决方案添加了适用于AMD处理器的内容。正如PeterCordes在评论中提到的,AVX-51

c++ - 是否可以使用 Wojciech Mula 算法对 __m256i 进行 popcount 并将结果存储在 8 个 32 位字而不是 4 个 64 位字中?

我最近发现AVX2没有__m256i的popcount,我发现做类似事情的唯一方法是遵循WojciechMula算法:__m256icount(__m256iv){__m256ilookup=_mm256_setr_epi8(0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4);__m256ilow_mask=_mm256_set1_epi8(0x0f);__m256ilo=_mm256_and_si256(v,low_mask);__m256ihi=_mm256_and_si256(_mm256_srli_e

c++ - 如何使用 OpenSSL 库生成 RSA-SHA256 数字签名?

我需要使用OpenSSL库从C++代码生成数字签名。我知道我需要那个DSA\DSA_do_sign,但不明白如何使用它。有没有人有这方面的例子,或者比OpenSSL提供的文档更好的引用?提前致谢! 最佳答案 您似乎混淆了RSA和DSA。但是,如果您想使用RSA-sha256进行签名,请使用EVPinterfaceforsigning.您可以使用EVP_SignInit_ex()方法和EVP_sha256()为type参数进行初始化。 关于c++-如何使用OpenSSL库生成RSA-SHA

c++ - 将打包的半字节组合成打包的字节

给定一个或多个__m128i或__m256i每个16位元素包含一个半字节,将它们组合并打包为每个8位元素一个字节的最快方法是什么(即(hi用于相邻的16位元素)?这是我想出的最好的方法,不幸的是,它与标量代码相当:conststatic__m256ishufmask=_mm256_setr_epi8(2,255,255,255,6,255,255,255,10,255,255,255,14,255,255,255,2,255,255,255,6,255,255,255,10,255,255,255,14,255,255,255);conststatic__m256ihigh4=_mm2