数字签名,加密方案
什么是数字签名和数字证书正文如果你能非常清晰的回答出以下问题,可以不用看这篇文章了:
非对称加密中公私钥都可以加密,那么什么时候用公钥加密,什么时候用私钥“加密” ?
什么是数字签名,数字签名的作用是什么?
为什么要对数据的摘要进行签名,而不是直接计算原始数据的数字签名?
什么是数字证书,数字证书解决了什么问题?
这篇文章,主要围绕 数字签名 和 数字证书 的原理以及它们的作用展开。
争取做到让不具备任何密码学基础知识的同学都能听懂,所以在这里需要先对齐一些加密相关的概念 。
什么是加密加密就是 对明文数据按某种特殊算法进行处理,使其成为不可读的一段代码,通常称为“密文“ , 密文通过”密钥“解密后还原出原来的明文,通过这样的途径可以达到保护数据不被非法人窃取、阅读的目的。
定义简单吧?那来看个题,考虑以下哪些属于加密方法:
AES
RSA
MD5
BASE64
SM4
这几种都是日常开发中常用的数据编码技术,但是只有 AES、RSA、SM4 才能算是加密方法。
为什么呢? 一个区分的简单方法就是看编码后的数据是否还能还原,能还原的是加密。
MD5 实际上是对数据进行有损压缩, ...
sha256 算法
sha256 算法
sha256是一种密码散列函数,说白了它就是一个哈希函数。对于任意长度的消息,SHA256都会产生一个256bit长度的散列值,称为消息摘要,可以用一个长度为64的十六进制字符串表示。sha256是SHA-2下细分出的一种算法。SHA-2下又可再分为六个不同的算法标准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256
在线测试网站 : https://tool.oschina.net/encrypt?type=2
sha256的安全性如何?sha256非常安全,因为获得相同哈希值的唯一方法是输入相同的文件或字符串。即使是一个小的调整也会完全改变输出。这就是sha256如此安全的原因。 举例子:
1234567输入:Bye1得到的结果:741a03a10f3de6b2eb81985d06b70f549e762d2e9a1895c5156ffc5e10ffde33输入:bye1得到的结果:d828103bd4740f22982794b6bd394839dd73f894280a631 ...
micor-ecc 适用于8bit/32bit/64bit处理器的小型ECDH和ECDSA实现
micro-ecc [适用于MCU的ECC算法库]适用于 8 位、32 位和 64 位处理器的小型且快速的 ECDH 和 ECDSA 实现。
nano-ecc是micro-ecc的分支,两者相比,nano-ecc针对Arduino适配,但没有汇编级优化,而micro-ecc针对乘法在ARM处理器中的实现做了汇编级优化。配合M0/M4处理器,可以更快实施ECC算法:ECDH/ECDSA。
1https://github.com/kmackay/micro-ecc
1https://github.com/iSECPartners/nano-ecc
算法介绍ECDSA是用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。而ECC(全称Elliptic Curves Cryptography)是一种椭圆曲线密码编码学。
ECDH每次用一个固定的DH key,导致不能向前保密(forward secrecy),所以一般都是用ECDHE(ephemeral)或其他版本的ECDH算法。ECD ...
简单的RGB转HSV代码
简单的RGB转HSV代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164// Copyright (c) 2014, Jan Winkler <winkler@cs.uni-bremen.de>// All rights reserved.//// Redistrib ...
嵌入式C代码参考仓库(包含各种常用库)
嵌入式C代码参考仓库(包含各种常用库)以下这些库提供了一系列常用的C语言库,可以用于解决在嵌入式系统开发中常见的问题。
可以学习代码框架
内置一些非常好的小组件,基本移植一下就能使用
学习编程风格和规范
linux kernel
https://github.com/torvalds/linux
xboot
https://github.com/xboot/xboot
VSF
https://github.com/vsfteam/vsf
RT-Thread
https://github.com/RT-Thread/rt-thread
合宙
https://github.com/openLuat
https://github.com/openLuat/luatos-soc-2023
YiYi OS
https://github.com/evilbinary/YiYiYa
zephyr
https://github.com/zephyrproject-rtos/zephyr
嵌入式资料汇总
https://github.c ...
RGB565 与 RGB888的相互转换 (颜色补偿)
RGB565 和 RGB888是两种不同的颜色表示方式,在计算机图形学和显示领域中被广泛使用。RGB565使用16位数据表示一种颜色,每个颜色通道(红色、绿色、蓝色)使用5位、6位和5位的数字分别表示,而RGB888则使用24位数据表示一种颜色,每个颜色通道都使用8位数字。相互转换时,需要对颜色值进行折算和补偿,以确保转换后的颜色与原始颜色尽可能接近。
RGB888 -> RGB5651.取RGB888中第一个字节的高5位作为转换后的RGB565的第二个字节的高5位
2.取RGB888中第二个字节的高3位作为转换后的RGB565第二个字节的低3位
3.取RGB888中第二个字节的第4--6位,作为转换后的RGB565第一个字节的高3位
4.取RGB888中第二个字节的第三个字节的高5位作为转换后的RGB565第一个字节的低5位
RGB565 -> RGB888RGB565的存储方式为: R4 R3 R2 R1 R0 G5 G4 G3 G2 G1 G0 B4 B3 B2 B1 B0
1.取RGB565第一个字节中低5位作为RGB888的高5位
2.取RGB565第二个 ...