信息安全-同步流密码(序列密码)设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);