首页 > 其他分享 >基于FPGA实现的图像加密与解密

基于FPGA实现的图像加密与解密

时间:2023-08-17 18:34:31浏览次数:42  
标签:加密 FPGA 数据 解密 密钥 key data

双非硕士 研一下学期视觉转FPGA

长路漫漫,但希望前途光明

基于图像加密的方法网上有特别多种

由于我自己本身也是初学者,所以就复现了最简单最直接的加密和解密的方法

也就是明文和密钥的异或操作

 显示的图片如下:

原图/解密

基于FPGA实现的图像加密与解密_伪代码

 加密图片

基于FPGA实现的图像加密与解密_数据存储_02

思路:

1)定义两个ROM,分别存储明文数据和密钥数据,明文数据存储原图片数据,密钥数据可以存储一张乱码图片,如下图这种:

基于FPGA实现的图像加密与解密_数据_03

2)首先将明文数据和密钥数据进行异或,得到加密后的数据,伪代码可以这样写:


wire [23:0]Encryption;

assign Encryption = img_data ^ key_data // img_data 是原图像数据,key_data 是密钥数据

3)解密的数据就是将加密后的数据与密钥数据进行异或,伪代码可以这样写:

wire [23:0]Decryption;

assign Decryption = Encryption ^ key_data;

4)可以通过一个按键来调整显示的图片是加密或者解密:

assign disp_data = put_key == 1'b1 ? Encryption : Decryption;

5)剩下的只要将待显示的图片数据传给HDMI进行显示即可,因为这方面的内容网上很多,这里就不进行介绍了。。。


标签:加密,FPGA,数据,解密,密钥,key,data
From: https://blog.51cto.com/u_16055951/7126348

相关文章

  • 解密Prompt系列13. LLM Agent-指令微调方案: Toolformer & Gorilla
    上一章我们介绍了基于Prompt范式的工具调用方案,这一章介绍基于模型微调,支持任意多工具组合调用,复杂调用的方案。多工具调用核心需要解决3个问题,在哪个位置进行工具调用(where),从众多工具中选择哪一个(Which),工具的输入是什么(What)。Where+Which+What,我称之为3W原则,3H它兄......
  • 【web_逆向08】对称加密之AES、DES
    对称解密所谓对称加密就是加密和解密用的是同一个秘钥.就好比.我要给你邮寄一个箱子.上面怼上锁.提前我把钥匙给了你一把,我一把.那么我在邮寄之前就可以把箱子锁上.然后快递到你那里.你用相同的钥匙就可以打开这个箱子.常见的对称加密:AES,DES,3DES等安装第......
  • 带密匙的字符串加密解密函数(支持中文)
    usesAnsiStrings; FunctionJiaMi(Src:String;Key:String):String; var  KeyLen:Integer;  KeyPos:Integer;  offset:Integer;  dest:String;  SrcPos:Integer;  SrcAsc:Integer;  Range:Integer;  IntTemp:integer; ......
  • 经常用到的加解密函数
    以下程序可直接用,拷贝就可以了,希望可以起到抛砖引玉的作用。functionStrDecrypt(s:string;key:word):string;var i:byte;const fc1=2; fc2=3;begin //result[0]:=s[0]; setlength(result,length(s)); fori:=1tolength(s) do begin result[i]:=char(byte(s[i])xo......
  • 解密Spring Framework的核心原理与魔法
    嗨,亲爱的读者朋友们!今天,我将带你解密SpringFramework的核心原理与魔法,帮助你深入理解这个强大的Java开发框架。作为一个技术达人,我将为你揭开SpringFramework的神秘面纱,让你在开发中游刃有余。SpringFramework简介SpringFramework是一个全面的、模块化的Java开发框架,被广泛用于......
  • C#SM2加密算法
    1.新建SM2Util类publicclassSM2Util{/***生成SM2秘钥对*string[0]公钥*string[1]私钥*/publicstaticstring[]GenerateKeyPair(){returnSM2.GenerateKeyPair();......
  • IM消息ID技术专题(七):深度解密vivo的自研分布式ID服务(鲁班)
    本文由vivo互联网技术AnPeng分享,本文收录时有内容修订和重新排版。1、引言本文通过对分布式ID的3种应用场景、实现难点以及9种分布式ID的实现方式进行介绍,并对结合vivo业务场景特性下自研的鲁班分布式ID服务从系统架构、ID生成规则与部分实现源码进行分享,希望为本文的阅读者......
  • 【FPGA】 DDR3读写(基于User Interface)
    【FPGA】DDR3读写(基于UserInterface)DDR3概述DDR3(doubledatarate3synchronousdynamicRAM)第三代双倍数据速率同步动态随机存储器同步:数据的速去和写入时钟同步动态:数据掉电无法保存,需要周期性刷新才能保持数据随机存取:能够对任意地址进行操作双倍数据速率:时钟的......
  • c# 利用数据库将程序加密隐藏?
    下面将介绍如何通过LiteDB将自己的程序进行加密,首先介绍一下LiteDB。LiteDBLiteDB是一个轻量级的嵌入式数据库,它是用C#编写的,适用于.NET平台。它的设计目标是提供一个简单易用的数据库解决方案,可以在各种应用程序中使用。LiteDB使用单个文件作为数据库存储,这个文件可以在磁盘......
  • RSA公钥私钥和签名验签与加密解密
    加密解密: 前端用公钥加密密码,传给后端,后端用私钥解密获取密码明文,不可以用私钥加密用公钥解密,这样会报错,公钥加密私钥解密是用来防止消息泄露的,即使加密后的消息被他人获取,在没有私钥的情况下也无法知道原文.签名验签: A给B发消息,A用私钥将消息加签,将加签的消息和原消......