CN111522556A - 一种分组密码编程语言及编译基础设施的设计方法 - Google Patents
一种分组密码编程语言及编译基础设施的设计方法 Download PDFInfo
- Publication number
- CN111522556A CN111522556A CN202010356206.3A CN202010356206A CN111522556A CN 111522556 A CN111522556 A CN 111522556A CN 202010356206 A CN202010356206 A CN 202010356206A CN 111522556 A CN111522556 A CN 111522556A
- Authority
- CN
- China
- Prior art keywords
- block cipher
- infrastructure
- compiling
- programming language
- target machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/425—Lexical analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种分组密码编程语言及编译基础设施的设计方法,包括:获取用户输入的分组密码程序代码;编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件。该方法能够生成特定目标机指令输出文件,便于分组密码的实现。
Description
技术领域
本发明涉及计算机信息安全技术领域,特别涉及一种分组密码编程语言及编译基础设施的设计方法。
背景技术
随着《中华人民共和国密码法》的颁布,信息安全工作已经成为国家法律体系下的强制性工作,嵌入式设备的推广,特别是各类穿戴式手持式设备的普及,使得加密设备由大型化走向芯片化。现有的分组密码芯片在应用的过程中,面临着一个困境,即分组密码算法程序代码难以使用分组密码芯片的指令集编写,而采用通用高级编程语言编写代码缺乏软件编译器支持,无法直接操作分组密码芯片的功能单元实现信息加密。现有的专用分组密码编程语言及编译工具虽然可以实现分组密码程序代码在通用芯片中解释执行,但是无法实生成特定芯片(目标机)的指令输出文件。
发明内容
本发明提供一种分组密码编程语言及编译基础设施的设计方法,便于分组密码的实现。
本发明的技术方案如下:
本发明提供一种分组密码编程语言及编译基础设施的设计方法,包括:
获取用户输入的分组密码程序代码;
编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件。
优选的,所述编译基础设施包括词法分析器、语法分析器、语义分析器和错误列表。
优选的,所述的编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件,包括:
所述词法分析器读取输入的分组密码程序代码,识别并判断所述分组密码程序代码的各类符号是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则输出所识别的符号;
所述语法分析器读取词法分析器输出的符号,识别符号之间的关系,并判断符号组成的关系是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则输出符号关系表达式;
所述语义分析器读取语法分析器输出的符号关系表达式,并判断语义关系是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则根据机器描述文件,生成特定目标机指令代码文件。
优选的,所述的目标机为分组密码芯片。
优选的,还包括:目标机获取所述的特定目标机指令代码文件,所述目标机的功能单元将所述特定目标机指令代码文件进行处理,执行分组密码运算,输出密文或明文。
本发明实施例的一些有益效果可以包括:
密码算法在专用指令集处理器中的实现依赖编程语言和编译工具的支持,现有技术无法生成特定目标机指令输出文件,利用本发明所提出的分组密码编程语言编写分组密码代码,可以较为快捷的编写分组密码算法程序代码,结合配套的利用编译基础设施读取程序代码,可编译输出特定目标机指令代码文件,该指令代码文件可以直接操作特定目标机的运算功能单元,目标机实现对数据的加密或解密计算,可以提高编程的灵活性,降低应用密码学研究人员在编写算法实现代码时的复杂度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例1的流程图;
图2为本发明实施例1中步骤S2的流程图;
图3为本发明实施例2的流程图;
图4为本发明中的分组密码编程语言及其编译基础设施的使用方法图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
实施例1:
如图1所示,该方法包括以下步骤S1-S2:
步骤S1,获取用户输入的分组密码程序代码;
步骤S2,编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件。
该实施例中,目标机为分组密码芯片,目标机功能单元指芯片内部的用来计算的模块化电路结构。用户输入的分组密码程序代码采用分组密码编程语言编写,分组密码编程语言包含分组密码算法常用的运算类型符号、数据类型符号、结构符号和功能函数符号。
编译基础设施为完成最基本编译功能的模块,用以将实现分组密码程序代码编译为具体的目标机指令文件,包括词法分析器、语法分析器、语义分析器和错误列表。
词法分析器由词法规则描述文件构成,用以识别输入的各类词法符号,包括:运算类型符号、数据类型符号、组成结构符号、功能函数符号。
语法分析器由语法规则描述文件构成,用以识别符号之间的连接关系,包括:顺序关系、嵌套关系、选择关系,跳转关系。
语义分析器由语义动作描述文件和机器描述文件构成,用以实现符号及符号关系之间向目标机指令的转换。语义动作描述文件包括具体分组密码描述语言符号与目标机指令格符号对应关系。机器描述文件包括目标机体系结构、指令集的操作码和操作数、目标机内存地址列表、目标机功能单元列表、目标机功能内存与操作数对应关系列表、目标机功能单元与操作码对应关系列表。
错误列表由词法错误列表、语法错误列表、语义错误列表构成。词法错误列表用于存储词法错误信息,语法错误列表用于存储语法误信息,语义错误列表用于存储语义错误信息。
在一个实施例中,如图2所示,步骤S2包括:
步骤S201,所述词法分析器读取输入的分组密码程序代码,识别并判断所述分组密码程序代码的各类符号是否有误,若有误则停止,并向错误列表返回错误信息;若无误,则输出所识别的符号;
步骤S202,所述语法分析器读取词法分析器输出的符号,识别符号之间的关系,并判断符号组成的关系是否有误,若有误则停止,并向错误列表返回错误信息;若无误,则输出符号关系表达式;
步骤S203,所述语义分析器读取语法分析器输出的符号关系表达式,并判断语义关系是否有误,若有误则停止,并向错误列表返回错误信息;若无误,则根据机器描述文件,生成特定目标机指令代码文件。
实施例2:
如图3所示,该方法包括以下步骤S1-S3:
步骤S1,获取用户输入的分组密码程序代码;
步骤S2,编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件;
步骤S3,目标机获取所述的特定目标机指令代码文件,所述目标机的功能单元将所述特定目标机指令代码文件进行处理,执行分组密码运算,输出密文或明文。
本实施例与实施例1的不同之处在于增加步骤S3,输出密文或明文,得到加密或解密数据。
如图4所示,用户根据分组密码运算规则,利用分组密码编程语言编写分组密码程序代码,本发明中的编译基础设施获取到用户输入的分组密码程序代码后,对分组密码程序代码进行处理,在处理过程中如果出现错误,则停止处理并向用户报具体错误类型与其在程序代码中的出现位置,如果没有错误,则将用户所编写的分组密码程序代码编译生成特定目标机指令代码文件,目标机的功能单元将根据指令代码文件的规定从目标机中的数据存储单元中获取数据,然后执行密码运算,最终输出运算后数据,即密文或明文。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (4)
1.一种分组密码编程语言及编译基础设施的设计方法,其特征在于:包括:
获取用户输入的分组密码程序代码;
编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件。
2.如权利要求1所述的一种分组密码编程语言及编译基础设施的设计方法,其特征在于:所述编译基础设施包括词法分析器、语法分析器、语义分析器和错误列表。
3.如权利要求2所述的一种分组密码编程语言及编译基础设施的设计方法,其特征在于:所述的编译基础设施将获取的所述分组密码程序代码进行处理,生成特定目标机指令代码文件,包括:
所述词法分析器读取输入的分组密码程序代码,识别并判断所述分组密码程序代码的各类符号是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则输出所识别的符号;
所述语法分析器读取词法分析器输出的符号,识别符号之间的关系,并判断符号组成的关系是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则输出符号关系表达式;
所述语义分析器读取语法分析器输出的符号关系表达式,并判断语义关系是否有误,若有误则停止编译,并向错误列表返回错误信息;若无误,则根据机器描述文件,生成特定目标机指令代码文件。
4.如权利要求1所述的一种分组密码编程语言及编译基础设施的设计方法,其特征在于:所述的目标机为分组密码芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010356206.3A CN111522556B (zh) | 2020-04-29 | 2020-04-29 | 一种分组密码编程语言及编译基础设施的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010356206.3A CN111522556B (zh) | 2020-04-29 | 2020-04-29 | 一种分组密码编程语言及编译基础设施的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522556A true CN111522556A (zh) | 2020-08-11 |
CN111522556B CN111522556B (zh) | 2023-11-24 |
Family
ID=71905120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010356206.3A Active CN111522556B (zh) | 2020-04-29 | 2020-04-29 | 一种分组密码编程语言及编译基础设施的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522556B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240511A (ja) * | 1997-02-25 | 1998-09-11 | Hitachi Software Eng Co Ltd | 暗号アルゴリズム開発支援装置及び暗号プログラム開発支援装置 |
CN102195773A (zh) * | 2010-03-03 | 2011-09-21 | 中国人民解放军信息工程大学 | 一种分组密码算法分析方法及系统 |
US20130055223A1 (en) * | 2011-08-25 | 2013-02-28 | Myezapp Inc. | Compiler with Error Handling |
CN105700934A (zh) * | 2016-02-19 | 2016-06-22 | 陕西瑞亚智能技术有限公司 | 一种智能编译方法和智能编译系统 |
CN109918081A (zh) * | 2019-03-01 | 2019-06-21 | 中安智联未来有限公司 | 一种编译方法及编译器 |
CN110825384A (zh) * | 2019-10-28 | 2020-02-21 | 国电南瑞科技股份有限公司 | 一种基于llvm的st语言编译方法及编译系统和编译器 |
-
2020
- 2020-04-29 CN CN202010356206.3A patent/CN111522556B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240511A (ja) * | 1997-02-25 | 1998-09-11 | Hitachi Software Eng Co Ltd | 暗号アルゴリズム開発支援装置及び暗号プログラム開発支援装置 |
CN102195773A (zh) * | 2010-03-03 | 2011-09-21 | 中国人民解放军信息工程大学 | 一种分组密码算法分析方法及系统 |
US20130055223A1 (en) * | 2011-08-25 | 2013-02-28 | Myezapp Inc. | Compiler with Error Handling |
CN105700934A (zh) * | 2016-02-19 | 2016-06-22 | 陕西瑞亚智能技术有限公司 | 一种智能编译方法和智能编译系统 |
CN109918081A (zh) * | 2019-03-01 | 2019-06-21 | 中安智联未来有限公司 | 一种编译方法及编译器 |
CN110825384A (zh) * | 2019-10-28 | 2020-02-21 | 国电南瑞科技股份有限公司 | 一种基于llvm的st语言编译方法及编译系统和编译器 |
Non-Patent Citations (1)
Title |
---|
郭书杰;马跃;王品;: "基于IEC61131-3的IL编译器的设计与实现", 计算机工程与设计, no. 10 * |
Also Published As
Publication number | Publication date |
---|---|
CN111522556B (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096338B (zh) | 智能合约执行方法、装置、设备及介质 | |
US5860008A (en) | Method and apparatus for decompiling a compiled interpretive code | |
CN102637136B (zh) | 用于融合来自不同编译器阶段的调试信息的方法和设备 | |
US8645930B2 (en) | System and method for obfuscation by common function and common function prototype | |
Zhou et al. | Zeror: Speed up fuzzing with coverage-sensitive tracing and scheduling | |
US7877741B2 (en) | Method and corresponding apparatus for compiling high-level languages into specific processor architectures | |
US8276130B2 (en) | Method and compiler of compiling a program | |
CN110414261A (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
TW200841242A (en) | Defining memory indifferent trace handles | |
CN112597454A (zh) | 代码混淆方法、代码运行方法、装置、介质与设备 | |
CN112434266A (zh) | 一种shellcode控制流扁平化混淆方法 | |
CN107871066B (zh) | 基于安卓系统的代码编译方法及装置 | |
CN110333867B (zh) | 一种多方安全计算数据处理方法、装置及系统 | |
Kuang et al. | Exploiting dynamic scheduling for VM-based code obfuscation | |
CN100468437C (zh) | .Net程序保护的方法和系统 | |
CN111782239B (zh) | 软件打包和源码版本信息获取方法、装置及存储介质 | |
CN111522556B (zh) | 一种分组密码编程语言及编译基础设施的设计方法 | |
CN104915244A (zh) | 键鼠脚本回放的方法及装置 | |
CN112052459A (zh) | 一种代码虚拟化加密方法、终端及存储介质 | |
US11886839B2 (en) | Non-transitory computer-readable recording medium, function generation method, and information processing device | |
CN113094664B (zh) | 一种防止安卓应用程序被反编译的系统 | |
CN112114809B (zh) | 一种程序代码安全防护方法、装置及存储介质 | |
CN114816436A (zh) | 一种基于反汇编的源码解析装置 | |
Hubbers et al. | From finite state machines to provably correct java card applets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |