自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 后量子密码:格密码难入门(二)CRYSTALS-Kyber算法

本文系统阐述了格密码中LWE及其衍生方案的发展脉络,重点解析环上LWE(RLWE)通过多项式环结构实现公钥压缩与计算加速的原理,并引入模LWE(MLWE)作为平衡安全与效率的桥梁。以NIST后量子密码标准为例,介绍基于MLWE的CRYSTALS-Kyber密钥封装机制,其通过调节模秩$k$灵活实现不同安全等级(Kyber512/768/1024),在保持高效性的同时达成与AES相当的安全强度,标志着格密码正式迈入实用化阶段。

2026-09-19 09:34:26 156

原创 后量子密码:格密码入门(一)

本文用通俗的方式介绍格密码,包括SVP和CVP难题

2026-08-29 20:52:53 385

原创 后量子密码:基于编码密码学

本文系统梳理了基于编码的密码学演进脉络。从汉明码奠定线性代数纠错框架,到RM码、RS码解决多错误与突发错误,再到Goppa码凭借随机化构造实现通信纠错向密码陷门的跨越,McEliece系统成为抗量子密码的“老将”。然而,其巨大的公钥尺寸限制了部署。2025年,HQC(Hamming Quasi-Cyclic)凭借准循环结构和创新的“双码设计”,用随机码保证安全性、用RM-RS级联码保证正确性,最后在NIST后量子密码标准化中胜出。

2026-08-22 21:38:07 349

原创 后量子密码:基于散列的签名方案

本文介绍基于散列的后量子密码发展历程与核心原理。主要内容包括: 发展历程 起源于1976年Lamport一次性签名方案,后因密钥管理复杂被RSA/ECC取代 量子计算威胁下凭借抗量子特性复兴,经Merkle树改进后推出XMSS/LMS等实用方案 2022年SPHINCS+(SLH-DSA)成为NIST后量子签名标准 基本原理 以Lamport方案为例演示签名流程: 为每个比特位生成独立公私钥对(0/1各一组) 签名时按消息比特选择对应私钥 验证时通过哈希运算核对公钥 原始方案存在"搭便车漏洞",需扩展为双密

2026-08-15 18:40:51 387 1

原创 一文可能弄懂基于标识密码算法

文章摘要 传统公钥基础设施(PKI)依赖数字证书验证身份,但存在高维护成本和安全风险。基于身份的密码体系(IBC)由Shamir提出,用身份标识(如邮箱)直接作为公钥,无需证书。2001年Boneh和Franklin利用椭圆曲线双线性配对实现首个实用IBE方案。IBC通过哈希到曲线将身份映射为公钥点,由密钥生成中心(KGC)用主私钥生成对应私钥。双线性配对技术(如Weil配对)验证私钥合法性,其数学特性确保安全性依赖于椭圆曲线离散对数难题。IBC简化了密钥管理,适用于物联网等场景,是密码学的重要突破。 (字

2026-08-08 22:19:42 374

原创 一文弄懂非对称密码

本文介绍了密码学从对称加密到非对称加密的演进历程。对称加密虽发展数千年,但始终面临密钥分发难题。1976年Diffie-Hellman提出公钥密码学概念,1977年RSA算法首次实现公钥加密,其安全性基于大数分解难题。随后出现的ECC椭圆曲线密码学在同等安全性下密钥更短、效率更高。我国也制定了SM2椭圆曲线公钥密码标准。文章重点解析了RSA算法的数论基础,包括质数、模运算、欧拉函数等概念,并通过RSA三人组的设计故事,揭示了公钥密码学突破对称密码思维定式的关键创新:利用数学难题而非混淆扩散实现安全。

2026-08-02 18:50:21 402

原创 一文弄懂散列函数

SHA-3并非为了取代 SHA-2,而是作为其备份与补充,旨在为未来的安全体系提供一道独立的防线。其核心是 Keccak 算法,它摒弃了传统的 Merkle-Damgård (MD) 结构,转而采用全新的海绵结构,从根本上规避了长度扩展攻击等结构性弱点。结构革新:海绵结构将内部状态划分为比特率(r)和容量(c)两部分。消息在吸收阶段与 r 部分交互,而 c 部分从不与外界直接接触,仅通过内部置换函数被间接影响。

2026-07-26 21:02:07 393

原创 一文读懂流密码

本文从流密码“逐比特异或”的核心思想切入,追溯了从弗纳姆电传加密到OTP绝对安全、再到工程化LFSR的历史演进。重点解析了ZUC算法三部件——LFSR(基于有限域GF(2³¹−1)的本原多项式保证496bit周期)、比特重组(时空双维度打散线性结构)、非线性函数F(S盒+循环移位+记忆单元注入非线性)的原理与协同机制,并梳理了密钥装入→32轮初始化→工作模式的完整运行流程,帮助读者系统理解现代流密码的设计逻辑。

2026-07-19 13:35:08 347

原创 弄懂有限域,AES加密核心GF(2⁸)数学原理详解

摘要: 有限域(Galois域)是一种元素有限的代数结构,支持加、减、乘、除(除数非零)封闭运算。常见例子包括$\mathrm{GF}(p)$($p$为质数),但为表示更多元素(如字节),需扩展为$\mathrm{GF}(p^n)$。通过引入多项式形式(系数取自$\mathrm{GF}(p)$)和不可约多项式取模运算,保证乘法封闭性。例如,AES中的$\mathrm{GF}(2^8)$对应8比特字节,其256个元素通过多项式表示,运算依赖不可约多项式$x^8+x^4+x^3+x+1$。这种结构化设计避免了人

2026-07-11 22:25:46 386

原创 密码学之分组密码

现代分组密码的发展经历了从古典密码到理想分组密码的理论探索,最终通过算法实现了接近理想分组密码的效果。Horst Feistel设计的DES算法是现代分组密码的里程碑,其核心思想是避免存储庞大的映射表,转而利用算法动态生成映射。香农提出的混淆与扩散原则成为分组密码设计的理论基础:混淆通过非线性变换(如S盒)消除明文与密文的统计关联;扩散则通过雪崩效应使微小输入变化引发全局输出改变。这些设计使得分组密码(如AES)在保证安全性的同时避免了理想分组密码的存储瓶颈,实现了安全性与实用性的平衡。

2026-07-05 21:06:15 456

原创 数论基础:现代密码学的数学根基

本文介绍了数论在现代密码学中的基础作用。数论研究整数的性质,虽然看似简单却包含许多未解难题。模运算是数论的核心概念,通过时钟运算的例子阐述了其"限定范围"的特性,并详细讲解了模运算的四则运算性质(加、减、乘、幂)。重点讨论了逆元的定义和计算方法,指出只有当两个数互质时逆元才存在。最后解释了质数和互质的概念,以及用欧几里得算法高效计算最大公约数的方法。这些数论基础为理解密码学中的加密算法提供了必要的数学支撑。

2026-06-28 18:59:49 260

原创 什么是密码学?

文章摘要: 本文从WannaCry勒索病毒攻击案例切入,深入解析密码学的基本概念。通过加密过程(明文→密文)和密钥机制,阐述了密码学四大核心功能:保密性、完整性和真实性/不可否认性。文章系统梳理了密码学发展史,从古希腊斯巴达棒、中国虎符等古典密码,到现代对称密码、公钥密码和杂凑算法三大类技术体系,并介绍了DES、AES、RSA等代表性算法。全文通过历史演进视角,展现了密码学从简单置换代换到复杂数学理论的跨越式发展,揭示了这一学科在信息安全领域的基础性地位。

2026-06-07 18:08:47 487

原创 Android广播的学习和使用

1.引子最近开发碰到一个需求,客户的设备是自助售货机,他们要求应用静默安装后能够启动,因为派人去现场一个个点击打开应用不现实。作为论坛复制粘贴工程师,碰到这个需求第一时间就是去网上搜索,看看这种需求有什么解决方案,网上文章很多,都说用静态广播,但我复制他们的代码一直没效果,反复排查哪里漏复制了,结果都不是,而是因为,这里先卖个关子,先学习一下广播,不然复制粘贴后还是啥都不懂。2.广播定义Android里的广播,和我们日常里的广播是相似的,都是用于消息的传递,但消息的传递不是一对一的传递,而是

2020-05-16 16:50:53 541

原创 Android权限申请的学习实践

1.引子在换到Android手机之前,对Android系统的印象是这系统app的跑马场,app可以任意索取各种权限,随意窃取各种隐私,换手机后才知道Android系统对权限的管理已有很大的改观,索取的每个危险权限都需要提示用户,当然Android只是尽可能提示用户,还是存在着用户不同意就不给用的情况。权限管理的改进给开发者增加了一定工作量,申请危险权限不再是简单的在AndroidManifes...

2020-04-18 18:31:27 1605

原创 Activity生命周期的学习和验证

1.引子Activity就像是英文词汇本的Abandon,开篇就能碰到,关于Activity生命周期的博客教程非常多,侧面说明Activity非常重要,其中的Activity的生命周期又是重中之重,面试官非常喜欢拿这个作为考点,因为掌握Activity生命周期对提高应用的健壮性具有很大的帮助。因为只看教程不自己总结实践的话,对其理解总会差点意思,自己动手总结了印象才深刻。2.Activity生...

2020-04-11 12:29:03 1589

原创 Android消息机制源码,一个比较直观的简析

1.引子在上一篇Android消息机制基本原理,我们学习了Android消息机制基本原理和使用方法,看到原理比较复杂,什么Handler啊,Looper啊,MessageQueue啊,但使用消息机制却是十多行代码搞定,感觉跟漫威电影一样,前期渲染反叛如何如何逆天,结果被主角轻松用嘴炮打败。当然Android开发和电影不同,电影中我们希望主角打败反派过程复杂一点,这样才有戏剧冲突性,但在Andr...

2020-03-28 11:10:03 284

原创 Android消息机制基本原理和使用

在Android开发过程中,我们常常遇到子线程更新UI的需求,例如在子线程进行耗时较长的下载,等下载完成之后,再去更新UI,提示用户下载完成,直接在子线程里更新UI,会得到报错提示:Only the original thread that created a view hierarchy can touch its views。Android老手知道这是怎么回事,并且知道解决方案,新手只能去网...

2020-03-20 19:43:16 660 1

原创 Android持久化存储(4)greenDAO的使用

1.背景在上篇博客介绍SQLite的使用我们能感觉到,虽然Android已经简化了一些SQLite的操作,提供了较为方便的API,但使用中还是需要开发者写一些SQL语言,简单而不简约,有时候只想存储一些简单数据,却需要花费很大力气去开发接口,当然你可以说让另一个程序员去开发数据库操作接口不就行了吗,你老板肯定不同意,这么简单的活还要找别人,本来招你就是想一个人当两个人用,你还奢望一份工作两个...

2020-03-13 18:28:05 558

原创 Android持久化存储(3)SQLite数据库的使用

1.什么是SQliteSQLite是由C语言编写的一款轻型数据库,因占用资源小,处理速度快,功能齐全,特别适用于移动设备,最重要的是开源,任何人都可以使用它,许多开源项目(PHP,Python)和当今两大手机操作系统Android和iOS都使用了SQLite,造就了SQLite成为目前世界上最常见的数据库引擎。2.SQLite特点除了占用资源小,处理速度快等优点,SQLite还有自己的特点,...

2020-03-07 14:04:06 389

原创 Android持久化存储(2)SharedPreferences使用介绍

1.背景在用文件存储的时候,我们体验到使用内部存储的方便快捷,即既不用申请权限,也不用指定路径,不过还是有不方便的地方,特别是在存储程序配置信息时,程序的配置信息往往是”键-值“的形式,例如是否夜间模式-否语言-中文全屏浏览-否对这些信息的存取,我们需要另外写解析类工具,不过,已有现成的轮子可以使用,那就是Android提供的SharedPreferences类。2.什么是Shar...

2020-03-01 11:26:00 610

原创 Android持久化存储(1)文件存储

1.背景APP基本都有一个设置界面,用于进行各种功能设置,例如隐私设置,浏览设置等,用户可不希望当费力做了各种设置之后,关闭APP或者手机关机之后设置就失效了,为避免这种情况发生,开发者只需把设置数据保存到磁盘上即可,这种技术有一个高大上的名称,称为持久化。当然持久化不仅指内存数据写到磁盘上,还包括将磁盘上的数据读取到内存中,是一种让数据在瞬时状态和持久状态转换的机制。Android系统中,持...

2020-02-29 22:39:42 717

原创 Android Context初探

1.背景作为一个Android新手,每次看到使用Context作为参数时,都有点焦虑,有时候传this就可以,有时候又不行,不知道为什么可以,为什么又不可以,根本原因还是对Context是一知半解,偏偏很多地方用到Context作为参数,一直一知半解下去不是办法,有必要研究一下Context究竟是什么。2.什么是Context?Context中文意思是上下文,在小学语文课时,我们肯定接触过联...

2020-02-24 21:53:30 2858

原创 Android AIDL使用介绍(3) 浅说AIDL背后的Binder

1.背景在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该如何识别等等问题,而使用AIDL时,完全不用关心这复杂的过程,开发者只需关注业务逻辑即可,有句话说,哪有什么岁月静好,只不过有人替我们负重前行,AIDL的背后肯定有机制帮我们完成了这些进程间通讯的复杂...

2020-02-23 14:19:53 1651

原创 Android AIDL使用介绍(2)自定义数据类型的传递

1.背景默认情况下,AIDL只支持下列数据类型:Java八种基础数据类型(如 int、long、char、boolean 等);String字符串;CharSequence字符序列;List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelable类型(这也是本文准备讲解的);Map,Map 中的所有元素必须是以上列表中支持的数据类型,或者您所声明的由 AIDL 生...

2020-02-19 12:26:57 2491 3

原创 Android AIDL使用介绍(1)基本使用

1.什么是AIDLAIDL全称是Android Interface Definition Language,中文译为Android接口定义语言,AIDL的提出是为了解决进程间通讯,我们知道,在Android系统中,每个进程在内存中是相互独立的,类似一个个独立王国,一个进程通常情况下无法访问其他进程的内存,但进程之间不是老死不相往来的状态,他们之间有许多数据交互的需求,为此提出了AIDL,通过AI...

2020-02-16 22:26:04 3117

原创 Android Service介绍

背景先从日常用户体验说起,用过苹果的iOS系统都知道,凡是音频播放,在下滑菜单都能看到是哪个应用在播放,音频的标题,用户还可以直接在下滑菜单操作,而安卓手机则不然,因为Android系统使用本文介绍的Service进行后台音乐播放,而Service不提供和用户交互接口,因此在安卓手机上,当用户打开音乐程序并后台播放音乐,想关闭音乐只有再打开该播放音乐程序或者直接杀死所有程序才能关闭音乐,如果用户...

2020-02-12 23:01:53 551

原创 Android回调的简单理解

1.什么是回调回调的定义是在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调,这个定义比较正式,但看起来太绕了,一会A类一会B类,把人绕晕了。使用日常生活中的例子来理解一下,回调英文单词是Callback,直译为回呼或者回电话,那就用跟电话有...

2020-01-18 21:56:48 2437 1

原创 Android JNI开发流程介绍

1.什么是JNIJNI全称是Java Native Interface,中文称为Java本地接口。JNI是JAVA语言和C/C++语言沟通的协议,通过JNI,Java代码可以调用C、C++等语言写的代码,或者反过来C、C++等语言代码通过JNI调用Java 写的代码。为什么使用JNI?我们知道,Java语言的特性是一次编写,到处运行,跨平台是Java的优点,但有得就有失,跨平台的特性导致了J...

2020-01-12 21:50:12 1246

原创 Schnorr身份识别方案

Schnorr身份识别协议是又一个零知识证明协议,相比Fiamt协议有两点不同,一是其安全性依赖于离散对数的困难性,二是该方案使用乘法群,从而可以提前计算了一些参数,减小了证明者实时计算开销,特别适合计算能力有限的环境下运行,例如嵌入式设备,介绍Schnorr之前,先对Schnorr所依据的乘法群和离散对数的背景进行介绍。1.首先理解一下群(goup)的概念现在我们的微信和qq上有各种群,...

2019-06-09 21:42:40 3966 1

原创 零知识证明介绍

日常生活中,我们经常要向说服他人相信某件事是真的,但除了这一具体陈述是真实的事实以外,又不想透露任何额外的信息。例如,Alice对Bob说,她能分辨茅台和五粮液的口味,但是她不愿意把具体分辨的方法告诉Bob,那么Alice要怎么让Bob相信自己说的是真的?Bob又怎么验证Alice说的是否是真的?和Alice和Bob类似的例子还有门禁系统的身份认证,访客想要验证自己是合法的用户,但是又不...

2019-06-02 22:48:37 2870 1

原创 numpy.mean函数

numpy.mean函数定义numpy.mean(a,axis=None,dtype=None,out=None,keepdims=<no value>)功能:用于计算指定轴的算术平均值返回值:返回数组元素的平均值。 默认情况下,计算所有元素的的平均值,否则返回指定轴的平均值。参数: a: array类型 如果a不是数组,函数会尝试转换...

2019-03-04 22:16:52 1955 1

原创 主成分分析法(PCA)原理漫谈

在研究OpenCV人脸识别算法时,了解到其中OpenCV特征脸法Eigenfaces是基于主成分分析法(principal component analysis,简称PCA),后来再了解到PCA不仅仅是在人脸识别算法中广泛使用,在其他需要数据降维时也大有用武之地。因此有必要对其原理做一次较为深入的研究。1.小孩的成绩小学的时候,课程很少,主要是语文和数学两门课,某一次期末考试后,小明他爸看...

2019-02-24 12:03:59 1986

greenDAODemo.zip

个人的greenDAO使用示例代码,可用于学习greenDAO,代码较为简单,仅供参考...............................................

2020-03-13

ESD集成电路保护研究

ESD集成电路保护研究,大家可以下来看看

2011-06-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除