信息安全-同步流密码(序列密码)设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二(1)同步流密码

一.实验目的:

1.掌握同步序列密码的原理

二 .相关的知识与要点

序列密码也称为流密码(Stream Cipher),它是对称密码算法的一种。序列密码具有实现简单、便于硬件实施、加解密处理速度快、没有或只有有限的错误传播等特点,因此在实际应用中,特别是专用或机密机构中保持着优势,典型的应用领域包括无线通信、外交通信。1949年Shannon证明了只有一次一密的密码体制是绝对安全的,这给序列密码技术的研究以强大的支持,序列密码方案的发展是模仿一次一密系统的尝试,或者说“一次一密”的密码方案是序列密码的雏形。如果序列密码所使用的是真正随机方式的、与消息流长度相同的密钥流,则此时的序列密码就是一次一密的密码体制。若能以一种方式产生一随机序列(密钥流),这一序列由密钥所确定,则利用这样的序列就可以进行加密,即将密钥、明文表示成连续的符号或二进制,对应地进行加密,加解密时一次处理明文中的一个或几个比特。

在序列密码中,密钥流由密钥流发生器f产生:zi=f(k,si),这里的si是加密器中存储器(记忆元件)在i时刻的状态。根据加密器中的记忆元件si的存贮状态是否依赖于明文字符,序列密码可进一步分成同步和自同步两种。如果si独立于明文字符则称为同步流密码,否则称为自同步流密码。

三 .实验环境

eclipse ,Android 虚拟机,Windows操作系统

四 .实验内容:

1、源码:

package com.example.codesystem;

import android.support.v7.app.ActionBarActivity;

import android.support.v7.app.ActionBar;

import android.support.v4.app.Fragment;

import android.R.string;

import android.os.Bundle;

import youtInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.EditText;

import android.os.Build;

public class MainActivity extends ActionBarActivity {

EditText mingwenTv ;

EditText miwenTv ;

EditText keyTv ;

Button jiamiBtn;

Button jiemiBtn;

String mingwenString = null;

String miwenString = null;

String key = "123456";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(yout.activity_main);

mingwenTv = (EditText) findViewById(R.id.mingwenTv) ;

miwenTv = (EditText) findViewById(R.id.miwenTv) ;

keyTv = (EditText) findViewById(R.id.miyaoTv) ;

jiamiBtn = (Button) findViewById(R.id.jiamiBtn);

jiemiBtn = (Button) findViewById(R.id.jiemiBtn);

keyTv.setText("key:"+key);

mingwenTv.setText("信息安全");

jiamiBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

String inputStr = mingwenTv.getText().toString();

String str = Jiami.encry_RC4_string(inputStr, "123456");

miwenTv.setText(str);

}

});

jiemiBtn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {

String inputStr = mingwenTv.getText().toString();

String str = Jiami.decry_RC4(inputStr, "123456");

miwenTv.setText(str);

}

});

}

}

package com.example.codesystem;

import android.support.v7.app.ActionBarActivity;

import android.support.v7.app.ActionBar;

import android.support.v4.app.Fragment;

import android.R.string;

import android.os.Bundle;

import youtInflater;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup;

import android.widget.Button;

import android.widget.EditText;

import android.os.Build;

public class MainActivity extends ActionBarActivity {

EditText mingwenTv ;

EditText miwenTv ;

EditText keyTv ;

Button jiamiBtn;

Button jiemiBtn;

String mingwenString = null;

String miwenString = null;

String key = "123456";

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(yout.activity_main);

相关文档
最新文档