Android仿射密码加密app

仿射密码是根据26个英文字母转换成0到25,总共26个数字,然后根据e(x)=y=ax+b(mod26)进行加密的,其中a和b为0到25中的数字,且a和26互素,即gcd(a,26)=1,加密之后得到的y转成英文字母即可实现加密

MainActivity类:

package com.example.administrator.encode;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
    private String input = null;
    private String output = null;
    private String outstring = "abcdefghijklmnopqrstuvwxyz";
    private int inputnum[] = new int[1000];
    private int outputnum[] = new int[1000];
    private int out[] = new int[26];
    private int i;
    private String a, b;
    private char outputchar[] = new char[1000];

    private EditText edit1;
    private EditText edit2;
    private EditText edit3;
    private TextView text6;
    private Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text6 = (TextView) findViewById(R.id.text6);
        edit1 = (EditText) findViewById(R.id.edit1);
        edit2 = (EditText) findViewById(R.id.edit2);
        edit3 = (EditText) findViewById(R.id.edit3);
        button2 = (Button) findViewById(R.id.button2);

        button2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                input = edit1.getText().toString();
                char inputchar[] = input.toCharArray();
                char outstringchar[] = outstring.toCharArray();
                for (i = 0; i < inputchar.length; i++) {
                    if (inputchar[i] >= 'a' && inputchar[i] <= 'z') {
                        out[inputchar[i] - 'a']++;//统计各个字母个数
                        inputnum[i] = inputchar[i] - 'a';
                    }
                }
                a = edit2.getText().toString();//得到加密的a和b
                b = edit3.getText().toString();
                if (!a.isEmpty() && !b.isEmpty()) { //这里要考虑没有输入a、b值的情况
                    int aint = Integer.parseInt(a);//String转int
                    int bint = Integer.parseInt(b);
                    input = edit1.getText().toString();
                    for (i = 0; i < inputchar.length; i++) {
                        outputnum[i] = aint * inputnum[i] + bint;
//                        if (outputnum[i] < 0) {
//                            outputnum[i] = outputnum[i] + 26;
//                        }
                        outputnum[i] = outputnum[i] % 26;
                        outputchar[i] = outstringchar[outputnum[i]];
                    }
                    output = String.valueOf(outputchar);//char[]转string
                    text6.setText(output.toUpperCase());//string类小写转大写
                } else {
                    Toast.makeText(MainActivity.this,
                            "请输入a和b的值", Toast.LENGTH_SHORT).show();
                }
            }
        });

    }
}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.administrator.MainActivity">
    <TextView
        android:id="@+id/text1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="请输入小写字母"
        android:textSize="30sp" />

    <EditText
        android:id="@+id/edit1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:hint="Type here"
        android:gravity="center"
        android:maxLines="5" />
    <TextView
        android:id="@+id/text3"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:text="输入加密时的a、b的值"
        android:textSize="30sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/text4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="a : "
            android:textSize="30sp" />
        <EditText
            android:id="@+id/edit2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:hint="Type here" />
        <TextView
            android:id="@+id/text5"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:text="b : "
            android:textSize="30sp" />
        <EditText
            android:id="@+id/edit3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center"
            android:maxLines="5"
            android:hint="Type here" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal">

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:text="加密" />
    <EditText
        android:id="@+id/text6"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_weight="3" />
    </LinearLayout>
</LinearLayout>

效果图:
这里写图片描述

完整android studio工程:
http://download.csdn.net/detail/amazinguu/9523389

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值