欢迎访问有用文档网!

当前位置: 有用文档网 > 心得体会 >

古典密码实验报告

| 浏览次数:

 实

 验

 报

 告 一、 实验室名称:

 SimpleSPC 信息安全云实验系统 二、 实验项目名称:

 古典密码——置换密码 三、 实验学时:

 1 学时 四、 实验原理:

 1) 算法原理

 a) 置换密码算法是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。将明文中的字母按照给定的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。其解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

 b) 置换密码(Permutation Cipher),又称换位密码。算法实施时,明文的字母保持相同,但顺序会被打乱。置换只不过是一个简单的换位,每个置换都可以用一个置换矩阵 Ek 来表示。每个置换都有一个与之对应的逆置换 Dk。置换密码的特点是仅有一个发送方和接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。它是对明文 L 长字母组中的字母位置进行重新排列,而每个字母本身并不改变。

 c) 设 n 为一固定整数,P、C 和 K 分别为明文空间、密文空间和密钥空间。明/密文是长度为 n 的字符序列,分别记为 X(x1,x2,…,xn)属于 P 和 Y(y1,y2,…,yn)属于 C ,K 是定义在{1,2,…,n}的所有置换组成的集合。对任何一个密钥(即一个置换),定义置换如下:

 加密置换为:

  解密置换为:

  上式中,是的逆置换,密钥空间 K 的大小为 n!

 2) 算法参数

  置换密码算法主要有 c、m、k、n 四个参数。c 为密文,m 是明文,k 为密钥,n 为模数。

 3) 算法流程

  算法流程。如图所示

  五、 实验目的:

 1)

 学习置换密码的原理

 2)

 学习置换密码的算法实现

 六、 实验内容:

 1.在虚拟机上运行置换密码.exe 可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。

 2.学习掌握置换密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

 3.看懂实验程序代码,如有需要可在其上进行优化。

 七、 实验器材(设备、虚拟机名称):

 Windows 7

 工具:C:\tools\密码学课程\01 密码学算法\02 古典密码\01 置换密码

 八、 实验步骤:

 1、查看置换密码算法运行结果并学习其核心算法

 1.1

 点击【置换密码.exe】,选择对明文【asdfgh】使用密钥【qwerty】进行加密,程序运行结果。如下图所示

  但是在实验中发现,当密钥中包含相同字符时,加密和解密结果会出现问题,如下图所示:

 在观察程序代码后,发现应该是加密表生成出现问题,因此在实验中我重新修改了程序中计算加密表部分的代码,利用双层循环,对于每一个字符,计算比其小的字符或者和它一样但是出现在其左侧的字符个数,得到的序列便是加密表的内容,将程序按照上述思路修改后测试运行正确。

 1.2

 更新后的置换密码的核心算法如下所示。

 #include<iostream> #include<algorithm> using namespace std; char a[20][6], b[20][6], c[20][6], m[102], key[6], ky[6], mw[102], bb[102]; int zh[6], zh1[6]; int j, len, length, e, f; void

 ISD_zhihuan_zhihuan(int le) {

 int i, s = 0;

 if (le % 6 == 0)

  //明文长度是6的倍数时

 {

  for (j = 0; j<(le / 6); j++)

 for (i = 0; i<6; i++, s++)

 {

  a[j][i] = m[s];

 }

 }

 else

  //明文长度不是6的倍数时

 {

  for (j = 0; j<((le - le % 6) / 6); j++)

 for (i = 0; i<6; i++, s++)

 {

  a[j][i] = m[s];

 }

  j++;

  int w = 0;

  for (int l = le - le % 6; l<le; l++, w++)

  {

 a[j][w] = m[l];

  }

  for (int ll = le % 6; ll<6; ll++)

  {

 a[j][ll] = "X";

 //数组后补x使数组长度为6的倍数

  }

 }

 length = 6 * j; } int ISD_zhihuan_encrypt() {

 cout << endl << "请输入密钥,要求是6位字母:";

 cin >> key;

 for (int p = 0; p < 6; p++)

 {

  ky[p] = key[p];

 }

 //生成置换表

  for (int i = 0; i < 6; i++) {

  zh[i] = 1;

  for (int j = 0; j < 6; j++) {

 if (key[j] < key[i] || (j < i&&key[j] == key[i])) {

  zh[i]++;

 }

  }

 }

 cout << endl << "加密后的结果为:";

 int q = 0;

 for (int g = 0; g <= j; g++)

  for (int h = 0; h < 6; h++, q++)

  {

 b[g][h] = a[g][zh[h] - 1];

 //明文进行置换

 bb[q] = b[g][h];

 cout << bb[q];

  }

 return 0; }

 int ISD_zhihuan_decrypt()

 {

  int ss[6] = { 1,2,3,4,5,6 };

  for (int w = 0; w<6; w++)

  {

 for (int p = 0; p<6; p++)

 {

  if (ss[w] == zh[p])

 zh1[w] = p + 1;

  //计算逆置换表

 }

  }

  cout << endl << "解密后的结果为:";

 int

 t = 0;

  for (int g = 0; g <= j; g++)

 for (int h = 0; h<6; h++, t++)

 {

  c[g][h] = b[g][zh1[h] - 1];

  //明文进行逆置换

  mw[t] = c[g][h];

 }

  return 0;

 }

  void

  main()

 {

  cout << endl;

  cout << "请输入明文:";

  int k = 0;

  cin >> m;

  while (m[k] != "\0")

 //计算明文长度

 k++;

 len = k;

  cout << "明文长度len=" << len << endl;

  ISD_zhihuan_zhihuan(len);

  ISD_zhihuan_encrypt();

  ISD_zhihuan_decrypt();

  for (int d = 0; d<len + 6; d++)

 cout << mw[d];

  //输出解密后的明文

  int y, yy;

  for (yy = 0; yy<len; yy++)

  {

 if (mw[yy] == m[yy])

  y = 1;

 else

  y = 0;

  }

  if (y = 1)

 cout << endl << "CRYPT_OK" << endl;

  if (y = 0)

 cout << endl << "CRYPT_ERROR" << endl;

 }

  九、 实验结果及分析:

 测试修改后的程序,结果正确,如下图所示:

  下面对结果进行分析:

 对于输入的密钥 miaooh 计算每个字符的加密置换表值为 4 3 1 5 6 2 因此可获得加密结果为 evlyao 验证输出结果正确 计算每个字符的解密置换表值为 3 6 2 1 4 5 因此可获得解密结果为 loveya

 十、 实验结论:

 置换密码作为传统古典密码的一种,思想比较简单,即将明文按照密钥的长度一行一行地写成一个矩阵,然后每一行按密钥的顺序将明文读出获得的即为加密文。但是由于置换密码只是将明文简单地作顺序改变,字符并没有变化,因此破译起来比较容易,安全性较低。

 十一、 总结心得体会

 作为第一个实验,熟悉了实验的操作环境,并学会了置换密码的原理,尝试对明文进行加密并将其解密。通过查看程序源码对加密方法了解更加透彻,在将源码进行修改后解决了密钥中包含相同字符结果出错的问题,收获很大,为以后其他加密算法的学习作准备。

 实

 验

 报

 告

 学生姓名 李昕宜 学号 201500130052 指导老师

 实验地点 N3 实验时间 2018/3/19 班级 一班

 一、 实验室名称:

 SimpleSPC 信息安全云实验系统 二、 实验项目名称:

 古典密码——Vigenere 密码 三、 实验学时:

 1 学时 四、 实验原理:

 1)

 算法原理

 a) Vigenere 密码是由法国密码学家 Blaise de Vigenere 于 1858 年提出的一种代换密码,它是多表代换密码的典型代表。

 b) 定义:设 m 为某一固定的正整数,P、C 和 K 分别为明文空间、密文空间和密钥空间,并且 P=K=C=(Z26)m,对一个密钥 k=(k1,k2,…,km),定义维吉尼亚密码的加解密算法如下:

 Vigenere 密码加密算法:

 ek(x1,x2,…,xm)=(x1+k1,x2+k2,…,xm+km)

 Vigenere 密码解密算法:

 dk(y1,y2,…,ym)=(y1-k1,y2-k2,…,ym-km)。

 其中 k=(k1,k2,…,km)是一个长为 m 的密钥字,密钥空间的大小为 26m,所以对一个相对小的 m,穷举密钥也需要很长的时间。如 m=7,则密钥空间大小超过 8×109,所以手工搜索非常困难。当明文的长度超过 m 时,可将明文串按长度 m分局,然后对每一组使用密钥 k 加密。

 2) 算法参数

 Vigenere 密码算法主要有 c、m、k 三个个参数。c 为密文,m 是明文,k 为密钥。

 3) 算法流程

 算法流程如下。如图所示

  五、 实验目的:

 1)

 学习维吉尼亚算法的原理

 2)

 学习维吉尼亚算法的实现

 六、 实验内容:

 1.在虚拟机上运行 Vigenere.exe 可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。

 2.学习掌握维吉尼亚算法的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

 3.看懂实验程序代码,如有需要可在其上进行优化。

 七、 实验器材(设备、虚拟机名称):

 Windows 7

 工具:C:\tools\密码学课程\01 密码学算法\02 古典密码\03 vigenere 密码算法

 八、 实验步骤:

 一、查看维吉尼亚密码算法运行结果并学习其核心算法

 1.1

 点击文件【Vigenere.exe】,输入指令【v】,输入明文【xipuyangguang】,即可得到密钥和密文和明文,如图 1 所示

 图 1

 1.2

 维吉尼亚密码的核心算法如下所示。

 根据实验中已给代码进行分析了解了维吉尼亚密码的实现步骤,将主程序中没有用到的生命变量去掉,加入一些交互语句得到如下代码:

 #include <ctype.h> #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream> using namespace std; void ISD_Vigenere_crypt(char m[], char k[], char r[]) {

 int i, j, s = 0;

 j = strlen(k);

 for (i = 0; m[i]; i++)

  m[i] = tolower(m[i]);

 for (i = 0; k[i]; i++)

  k[i] = tolower(k[i]);

 for (i = 0; m[i]; i++)

  if (isalpha(m[i]))

  {

 r[i] = (m[i] - "a" + k[s%j] - "a") % 26 + "a";

  s++;

 /*s用来跳过明文中的空格字符*/

  }

  else

 r[i] = m[i];

 r[i] = 0;

 /*密文字符串结束符*/ } void ISD_Vigenere_decrypt(char c[], char k[], char m[]) {

 int i, j, s = 0;

 j = strlen(k);

 for (i = 0; c[i]; i++)

  c[i] = tolower(c[i]);

 for (i = 0; k[i]; i++)

  k[i] = tolower(k[i]);

 for (i = 0; c[i]; i++)

  if (isalpha(c[i]))

  {

 m[i] = (c[i] - k[s%j] + 26) % 26 + "a";

 s++;

  }

  else

 m[i] = c[i];

 m[i] = 0; } void main(int argc, char *argv[]) {

 char m[1024];

 printf("古典密码算法演示程序");

 char command;

 printf("\n");

 cout << "输入v:维吉尼亚加密!\n";

 cout << "输入h:获得帮助!\n";

 cout << "输入e:退出程序!\n";

 cout << "请输入指令:"; loop: cin >> command;

 switch

  (command)

 {

  case "v":

  {

 char k[] = "best";

  cout<< "\ninput plain text:";

 cin>>m;

 char c[80];

 char d[80];

 ISD_Vigenere_crypt(m, k, c);

 ISD_Vigenere_decrypt(c, k, d);

 cout << "明文:

 ";

 puts(m);

 cout << "密钥:

 ";

 puts(k);

 cout << "加密结果:

 ";

 puts(c);

 cout << "解密结果:

 ";

 puts(d);

 goto loop;

  }

  case "e":

  {

 return;

  }

  case "h":

  ;

  {

 cout << "输入v:维吉尼亚加密!\n";

 cout << "输入h:获得帮助!\n";

 cout << "输入e:退出程序!\n";

 goto loop;

  }

  default:

 goto loop;

 } }

 九、 实验结果及分析:

 测试程序,结果正确,如下图所示:

  明文 nomo

 reco

 unti

 ngdo

 llar

 s 密钥 be s t

 best

 best

 best

 best

 b 加密 os eh

 siuh

  vrlb

 okvh mpsk

 t 解密 nomo

 reco

 unti

 ngdo

 llar

 s 验证结果与输出一致,正确

 十、 实验结论:

 维吉尼亚密码加密方法是根据密钥内容,对输入的明文的字母进行替换,在密钥长度大于 1 的情况下,通常来说相同的字母也会由于对应的密钥字符不同而被不同的字符所替换,因此在一定程度上来说保证了加密技术的安全性,但是若已知密钥的长度且有足够多样本的情况下,同样也可以做词频分析从而破译密码。

 十一、 总结及心得体会

 维吉尼亚密码作为古典密码中的一种,加密原理简单易懂,程序实现也没有太大的困难,并且在密钥长度较长时加密安全性也可以有一定保证,较难破译,但用频率分析法可以破译已知密钥长度的密文,因此对于现代技术来说容易破译,但通过学习维吉尼亚密码学到了其加密的原理和基于统计破译密码的思想,收获很大。

 实

 验

 报

 告

 学生姓名 李昕宜 学号 201500130052 指导老师

 实验地点 N3 实验时间 2018/3/20 班级 一班

 一、 实验室名称:

 SimpleSPC 信息安全云实验系统 二、 实验项目名称:

 古典密码——代换密码 三、 实验学时:

 1 学时 四、 实验原理:

 1) 单表代换密码

 a) 加法密码

 A 和 B 是有 n 个字母的字母表。

 定义一个由 A 到 B 的映射:f:A→B

 f(ai )= bi=aj

 j=i+k mod n

 加法密码是用明文字母在字母表中后面第 k 个字母来代替。

 K=3 时是著名的凯撒密码。

 恺撒密码——历史上第一个密码技术

 “恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》)。

 b) 乘法密码

  A 和 B 是有 n 个字母的字母表。?定义一个由 A 到 B 的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。注意:只有(n,k)=1,才能正确解密。

 c) 密钥词组代替密码

 随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。然后按列取出字母构成密文字母表

 2) 多表代换密码

 单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。可以利用频率分析来破译。故产生了更为安全的多表代换密码,即构造多个密文字母表,在密钥的控制下用以一系列代换表依次对明文消息的字母序列进行代换。著名的多表代替密码有 Vigenere 密码等。

 a) Vernam 密码

 明文、密文、密钥都表示为二进制位:

 M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cn

 b) Playfair 密码

 用密钥控制生成矩阵,然后每两个字母为单位进行代换。

 c) Hill 密码(乘积密码)

 建立在矩阵相乘的基础上,但不能抵抗已知明文攻击。

 五、 实验目的:

 1)

 学习代换密码的原理

 2)

 学习代换密码的算法实现

 六、 实验内容:

 1.在虚拟机上运行代换密码.exe 可执行文件,根据提示输入明文和密钥,同时输入之前得到的密文和密钥检查输出的解密后的结果是否与明文一致。

  2.学习掌握代换密码的基本思想,了解其分类和不同代换密码之间的区别与共同点,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

 3.看懂实验程序代码,如有需要可在其上进行优化。

 七、 实验器材(设备、虚拟机名称):

 Window 7

 工具:C:\tools\密码学课程\01 密码学算法\02 古典密码\04 代换密码

 八、 实验步骤:

 一、查看代换密码算法运行结果并学习核心算法

 1.1

 运行可执行程序,结果如下(注意:这里输入的字符串位数最多不超过 5个)。如图 1 所示

 图 1

 1.2 源码阅读 在实验中发现提供的源码和代换密码.exe 文件无法对应,因此我根据可执行文件进行试验观察发现,程序是将待加密明文中的每一个字符的 ASCII 码与密钥的值相加,加密结果就是 ASCII 码和对应的字符,根据这个思路写的程序如下所示:

 #include <string> #include <iostream> using namespace std; int main()

 {

 cout << "请输入待加密的明文:" << endl;

 string m;

 char c[10]="";

 int k;

 cin >> m;

 cout << "请输入密钥:"<<endl;

 cin >> k;

 int i = 0;

 for (; i < m.length(); i++) {

  c[i] = m[i] + k;

 }

 c[i] = "\n";

 cout <<"密文为:"<<endl<< c << endl<<"请输入待解密的密文:"<<endl;

 string com;

 cin >> com;

 cout << "请输入密钥:" << endl;

 cin >> k;

 cout << "解密后的明文为:" << endl;

 char ming[10]="";

 i = 0;

 for (; i < com.length(); i++) {

  ming[i] = c[i] - k;

 }

 ming[i] = "\n";

 cout << ming << endl;

 return 0; }

  九、 实验结果及分析:

 测试修改后的程序,结果正确,如下图所示:

 ‘d’+20=’x’ ‘b’+20=’v’ ‘c’+20=’w’ ‘a’+20=’u’

 十、 实验结论:

 在本次实验中了解到代换密码分为单表代换密码和多表代换密码,其中多表代换密码中由于用多个代换表进行加密,因此安全性要比单表代换密码更强。代换密码的思想是要首先建立一个代换表(即密钥),加密时需要将加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后生成密文,需要注意的是将代换密码和置换密码进行区分,置换密码只是更换明文中字符的顺序,只是进行位置的置换。而之前学到的维吉尼亚密码是代换密码的一种。

 十一、 总结及心得体会:

 本次实验中接触到的代换密码我们已经很熟悉了,因为维吉尼亚密码是多表代换中重要的一种,同时我们还需要将其和之前学到的置换密码区分开,实验中发现,若将多表代换密码的技术和置换密码的技术结合起来得到的加密技术的安全性应该有很高的保证。

 实

 验

 报

 告

 学生姓名 李昕宜 学号 201500130052 指导老师

 实验地点 N3 实验时间 2018/3/20 班级 一班

 一、 实验室名称:

 SimpleSPC 信息安全云实验系统 二、 实验项目名称:

 古典密码——移位密码 三、 实验学时:

 1 学时 四、 实验原理:

 1) 算法原理

 a) 移位密码就是对 26 个字母进行移位操作,可以移动任意位数,这样就实现了对明文的加密,移位操作简单易行,因此,加密解密比较简单。

 b) 移位密码的基本思想:移位密码算法 c=m+k(mod 26),k 可以使 0<k<26 的任意整数。加密算法:x=x+k(mod26),解密算法 x=x-k(mod 26)。当 K=3,时,为凯撒密码。

 2) 算法参数

 移位密码算法主要有 c、m、k 三个参数。c 为密文,m 是明文,k 为密钥。

 3) 算法流程

 算法流程如下。如图所示

 五、 实验目的:

 1)

 学习移位密码的原理

 2)

 学习移密码的实现

 六、 实验内容:

 1.在虚拟机上运行移位密码.exe 可执行文件,根据提示输入明文和密钥,同时检查输出的解密后的结果是否与明文一致。

 2.学习掌握移位密码的原理,并根据明文和密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

 3.看懂实验程序代码,如有需要可在其上进行优化。

 七、 实验器材(设备、虚拟机名称):

 Windows 7

 工具:C:\tools\密码学课程\01 密码学算法\02 古典密码\06 移位密码算法

 八、 实验步骤:

 一、查看移位密码算法运行结果并学习核心算法

 1.1 点击【移位密码.exe】,选择【0】对明文进行加密。如图 1 所示

 图 1

 1.2 重新运行程序,选择【1】,对密文进行解密。如图 2 所示

  图 2

 1.3 移位密码的核心算法如下所示。

 //#include "stdafx.h" #include <iostream> #include "conio.h" #include <string> using namespace std; void ISD_yiwei_Secret(string &code, int k) {

 int i;

 for (i = 0; i<code.length(); i++)

 {

  if ((code[i] + k)>"z")

  {

 code[i] = ((code[i] + k) % "z") + "a" - 1;

  }

  else

  {

 code[i] = code[i] + k;

 }

  code[i] = code[i] - 32;

 } } void ISD_yiwei_Public(string &code, int k) {

 int i;

 for (i = 0; i<code.length(); i++)

 {

  if ((code[i] - k)<"A")

  {

 code[i] = "Z" - ("A" - (code[i] - k)) + 1;

  }

  else

  {

 code[i] = code[i] - k;

  }

  code[i] = code[i] + 32;

 } } int main() {

 int k;

 string code;

 cout << "请选择 \n移位加密:0 , 解密 : 1 : ";

  int n;

 cin >> n;

 switch (n)

 {

  case 0:

  cout << "\n请输入密匙(0 ~ 26), k = ";

 cin >> k;

  cout << "\n请输入原文:" << endl;

  cin >> code;

  ISD_yiwei_Secret(code, k);

  cout << "\n密文为:\n" << code << endl;

  break;

  case 1:

  cout << "\n请输入密文:" << endl;

  cin >> code;

  cout << "\n请输入密匙(0 ~ 26), k = ";

  cin >> k;

  ISD_yiwei_Public(code, k);

  cout << "\n原文为:\n" << code << endl;

 break;

  default:

 cerr << "输入错误! \n";

 }

 while (!_kbhit());

 return 0; }

 九、 实验结果及分析:

  测试修改后的程序,结果正确,如下图所示:

 在加密过程中对于每个字符进行(ASCII 值+13)%26+’A’的计算,可证明加密结果正确。同样解密过程中上式加号变减号,且转换为对应字母的小写字母,可以验证结果正确。程序无误。

 十、 实验结论:

 移位密码实际上是代换密码的一个特例,其思想比较简单,密钥空间较小,属于单表代换密码,即每个字符对应的加密字符都是固定对应的,实现起来也比较简单,可对字符的 ASCII 码值进行操作得到加密的结果。

 十一、 总结及心得体会:

 移位密码中的凯撒密码是我们之前已熟悉的经典古典密码之一,移位密码的思想实在凯撒密码的基础上进行了扩展,但思想仍比较简单,其加密和解密都比较容易实现,通过读程序源码对算法的原理有了更深的理解。

推荐访问:古典 密码 实验

热门排行Top Ranking

新时代青年的奋斗精神心得体会5篇

新时代青年的奋斗精神心得体会5篇新时代青年的奋斗精神心得体会篇1为进一步弘扬爱国奋斗奉献精神,激励党

XX乡镇防止返贫致贫监测和帮扶工作方案

XX乡镇防止返贫致贫监测和帮扶工作方案 为认真落实党的十九届四中全会关于“坚决打赢脱贫攻

坚持总体国家安全观心得体会250字8篇

坚持总体国家安全观心得体会250字8篇坚持总体国家安全观心得体会250字篇1“安而不忘危,存而不忘亡

宣传部部长心得体会15篇

宣传部部长心得体会15篇宣传部部长心得体会篇1首先,感谢领导给我这次评选优秀员工的机会,也感谢您能在

管理信息系统案例

第一章 信息系统与管理 案例((或实例) 得讨论题及点评((或回答)) [实例]利润计划工作中得反复

大学生体育课心得体会1500字5篇

大学生体育课心得体会1500字5篇大学生体育课心得体会1500字篇1不知不觉,进入大学第一个学期的体

餐饮单位疫情防控工作汇报

餐饮单位疫情防控工作汇报根据省、市、区疫情防控指挥部统一部署,严格落实《省市场监督管理局关于进一步加

党支部党建工作年度台账-基层党建工作台账

党支部党建工作年度台账::基层党建工作台账 党支部党建工作年度台账说明为抓好党建工作,根据《党章》《

党员的时代楷模心得体会12篇

党员的时代楷模心得体会12篇党员的时代楷模心得体会篇1@党员干部“打工攻略”请查收一年一度的“双十一

公文格式国家标准

公文格式国家标准 1范围 本标准规定了党政机关公文通用的纸张要求、排版和印制装订要求、公文格式各要素

内勤辅警先进事迹材料

内勤辅警先进事迹材料3篇 内勤辅警先进事迹材料1 办公室工作室一项既辛苦、又清苦的脑力劳动,他没有惊

傅雷家书阅读心得及感悟10篇

傅雷家书阅读心得及感悟10篇傅雷家书阅读心得及感悟篇1一连几天,我都沉浸在《傅雷家书》这本书中,感受