资源描述
《网络与信息安全》课程设计报告
班级: 网络07-1班
学号:310709040101
姓名:陈友娜
题目:加密软件设计
评阅:
成绩:
《网络与信息安全》课程设计报告
目 录
一、密码分析及密码系统设计原则 2
二、维吉尼亚密码 3
(一)维吉尼亚密码的介绍 3
(二)维吉尼亚密码的原理 4
(三)维吉尼亚密码-特点 5
(四)维吉尼亚密码的演变 7
(五)维吉尼亚密码下的扩展 7
三、界面的设计 15
(一)软件启动封面设计- 16
(二)软件框架设计 16
(三)软件按钮设计 16
(四)菜单设计 16
(五)标签设计 17
(六)图标设计 17
(七)滚动条及状态栏设计 17
(八)安装过程设计 17
(九)包装及商品化 17
四、加密的意义 18
总结 18
致谢词 19
参考文献 19
摘要
使用维吉尼亚密码加密只是众多密码加密方法中的一个,本设计是基于维吉尼亚密码的一种扩展,能起到更强的加密,完成所有属于ACSII的加密,本人主要负责设计的规划,程序设计,界面设计,报告的完成等工作,整个程序是Java平台下实现的。本次设计方法的原理以及方法仍然以维吉尼亚通用的方法来介绍。
关键词:维吉尼亚加密,密钥,加密,解密。
一、密码分析及密码系统设计原则
对通信双方而言,通信的一方将信息加密后发送给另一方,是为了使攻击者即使得到密文也无法读懂。对于攻击者来说,在不知道密钥的情况下,要想读懂密文,就要根据他的知识以及掌握的情报来进行密码分析。
密码分析是研究密钥未知的情况下恢复明文的科学。通常假设攻击者知道正在使用的密码体制,当然,如果分析者不知道正在使用的密码体制,分析起来将更加困难。成功的密码分析可能直接恢复明文或密钥,也可能找出保密系统的弱点来恢复明文或密钥。根据攻击者具有的知识和掌握的情报,可以将密码分析分为以下几种类型:
(1)只有密文的攻击。攻击者有一些密文,它们是使用同一加密算法和同一密钥加密的。
(2)已知明文的攻击。攻击者不仅得到一些密文,而且能得到这些密文对应的明文。
(3)选择明文的攻击。攻击者不仅得到一些密文和对应明文,而且能选择用于加密的明文。
(4)选择密文的攻击。攻击者可以选择不同的密文来解密,并能得到解密后的明文。
在每种情况下,攻击者的目标是确定正在使用的密钥或待破译密文所对应的明文。上述几种攻击方式是以强度递增排列的,只有密文的攻击是最容易防护的攻击。然而,目前最常见的是已知明文和选择明文的攻击。事实上,攻击者欲得到一些明、密文对或加密一些选择好的明文并不困难,攻击者可以知道很多信息具有标准的头部和尾部。一般来说,密码系统应该经得起已知明文的攻击。
密码系统的安全依赖于破译该系统的困难程度。如果破译一个密码系统的费用超过了被加密数据本身的价值,或者破译所需的时间超过了被加密数据所需保密的时间,或者由一个密码系统加密的数据少于破译该算法所需的数据量,就可以认为这个系统是安全的。
如果攻击者无论得到多少密文,都没有足够的信息去恢复明文,那么该密码系统就是无条件安全的。在理论上,只有一次一密的系统才能真正实现这一点。除此之外的系统都至少可以使用只有密文的攻击来破译。
设计密码系统必须至少满足下面的一个准则:
(1)破译该密码的成本超过被加密信息的价值;
(2)破译该密码的时间超过被加密信息的生命周期。
如果一个密码系统能够满足上述准则,就认为该系统在计算上是安全的。然而困难之处就在于难以估计成功破译密码的努力有多大。只能使设计的密码系统抗击已知的攻击,尤其要能抗击穷举密钥攻击,即强力攻击。
穷举密钥攻击方法是对截获的密文用所有可能的密钥解密,直到得到有意义的明文为止。从理论上来说,除了一次一密密码系统,其它任何密码系统都可以用穷举密钥攻击法破解,但实际上,任何一个实用的密码设计都会使这一方法在计算上失去可行性。
密码分析方法可以分为确定性和统计性两类。确定性分析法是利用若干已知数学关系式表示出所求的未知量,这种关系式是从加密和解密算法得来的;统计分析法则是利用明文的已知统计规律进行破译的方法。例如经典密码分析的许多技术利用了英文语言的统计特性。通过分析英文字母中单字母、双字母、三字母组合出现的频率并通过猜词法达到破译密码的目的。
二、维吉尼亚密码
(一)维吉尼亚密码的介绍
维吉尼亚密码多表代换密码中最著名的一种,这是以移位代换为基础的周期代换密码,m个移位代换表由m个字母组成的密钥字确定(这里假设密钥学中的M个字母不同,如果有相同的,则代换表的个数是密钥字中不同字母的个数)
如果密钥字为deceptive,
明文we are discovered save youselelf被加密为:
明文: wearediscoverdsaveyouselelf
密钥: deceptivedeceptivedeceptive
其中,密钥字母a,b,c…y,z对应数字0,1,2…24,25。密钥字母d对应数字3,因此明文字母W在密钥字母d的作用下向后移位3,得到密文字母Z。
例子:q=26, 明文x=polyalphabetic cipher,
K=radio
明文x=p o l y a l p h a b e t i c c i p h e r
密钥k=r a d i o r a d i o r a d i o r a d i o
密文y=g o o g o c p k t p n t l k q z p k m f
解密时,密文字母在密钥字母的作用下向前移位。
用算法表示:
加密:C=(m+k)mod26
解密:m=(c-k)mod26
设d为一固定的正整数,d个移位代换表π=(π1 ,π2 ,… πd) , 由密钥序列K=( k1,k2,…,kd)给定,第i+td个明文字母由表πi决定,即密钥ki决定
ek(xi+td)=(xi+td+ki)mod q =y
dk(yi+td)=(yi+td-ki)mod q =x
(二)维吉尼亚密码的原理
比如明文为JACKOZOO, 秘匙为LOVE, 则我们的密文是这样得到的:
J对应的密文我们查秘匙为L, 则在第L行中, 找到与第一行中的J对应的字母为 U.
A对应的密文我们查秘匙为O, 则在第O行中, 找到与第一行中的A对应的字母为 O.
C对应的密文我们查秘匙为V, 则在第V行中, 找到与第一行中的C对应的字母为 X.
K对应的密文我们查秘匙为E, 则在第E行中, 找到与第一行中的K对应的字母为 O.
O对应的密文我们查秘匙为L, 则在第L行中, 找到与第一行中的O对应的字母为 Z. (如果秘匙不够了,我们就循环使用秘匙, LOVELOVELO ... )
Z对应的密文我们查秘匙为O, 则在第O行中, 找到与第一行中的Z对应的字母为 N.
O对应的密文我们查秘匙为V, 则在第V行中, 找到与第一行中的O对应的字母为 J.
O对应的密文我们查秘匙为E, 则在第E行中, 找到与第一行中的O对应的字母为 S.
由此得到JACKOZOO在以LOVE作为秘匙的情况下, 其密文为: UOXOZNJS.
我们看到维吉尼亚密码也很好地隐藏了字频信息.
但是这里不得不提的是, 维吉尼亚密码(Vigenere Cipher)相对于希尔密码(Hill Cipher)来说, 其对字频信息的隐藏还不够彻底.
这也导致了在19世纪50年代, 英国人查尔斯-巴贝奇对其的破解. 其实其破解的基本思想如下:
比如在密文中, 经常出现了同一个子串(比如UPK), 而且每个字串之间的距离都是3的整数倍. 那么解密者就很容易推测出秘匙的长度为3. 其原因也是十分简单的:
当秘匙在重复了N次之后, 其还是用第一个字母去加密UPK相应的明文. 尤其是对THE, YOU, WHAT 这类高频词汇当使用了弱秘匙的话,更容易遭受破解. 关于维吉
尼亚密码的具体破解工作, 不在本文范围之内, 有兴趣的朋友可以自行研究.
以上介绍的是维吉尼亚密码的加密, 解密的话, 直接找出相应行在第一行中对应的字母即可
密钥的选取
在维吉尼亚密码中,如果密钥的长度是m,明文中的一个字母能够映成这m个可能的字母中的一个,容易看出维吉尼亚密码中长度为m的可能密钥字的个数是26的m次方,甚至对于一个较小的m值,如m=5,密钥空间超过了1.1乘以10的7次方,这个空间已经足已阻止手工穷举密钥的搜索。
为方便记忆,维吉尼亚密码的密钥字常常取于英文中的一个单词,一个句子或一段文章。因此,维吉尼亚密码的明文和密钥字母频率分布相同,仍然能够用统计技术进行分析。要抗击这样的密码分析,只有选择与明文长度相同并与之没有统计关系的密钥内容。1918年美国电报电话公司的G。W。Vernam提出这样的密码系统:明文英文字母编成5比特二元数字,称之为五单元波多代换码,选择随机二元数字流作为密钥,加密通过执行明文和密钥的逐位异或操作,产生密文,可以简单地表示为 Ci=Pi异或Ki
其中,Pi表示明文的第i个二元数字,Ki表示密钥的第i个二元数字,Ci表示密文的第i个二元数字,解密仅需执行相同的逐位异或操作:
Pi=Ci异或Ki
Vernam密码系统的密钥若不重复使用,就能得到一次一密码。若密钥有重复,尽管使用长密钥增加了密码分析的难度,但只要有了足够的密文,使用已知的或可能的明文序列,或二者相结合也能够破译。
在维吉尼亚密码中,明文中的字符映射到密文空间的字符不但依赖于明文字符,还依赖于它在上下文中的位置。但是在密文中依然保留了字符频率。根据某些统计信息破译该密码的关键是判断密钥的长度,即代换表的周期。
(三)维吉尼亚密码-特点
人们在单一恺撒密码的基础上扩展出多表密码,称为“维吉尼亚”密码。它是由16世纪法国亨利三世王朝的布莱瑟·维吉尼亚发明的,其特点是将26个恺撒密表合成一个,见下表:
A B C D F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
密钥
维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。假如以上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:
TO BE OR NOT TO BE THAT IS THE QUESTION
当选定RELATIONS作为密钥时,加密过程是:明文一个字母为T,第一个密钥字母为R,因此可以找到在R行中代替T的为K,依此类推,得出对应关系如下:
密钥:RELAT IONSR ELATI ONSRE LATIO NSREL
明文:TOBEO RNOTT OBETH ATIST HEQUE STION
密文:KSMEH ZBBLK SMEMP OGAJX SEJCS FLZSY
(四)维吉尼亚密码的演变
历史上以维吉尼亚密表为基础又演变出很多种加密方法,其基本元素无非是密表与密钥,并一直沿用到二战以后的初级电子密码机上。
公元16世纪晚期,想要获得更高的保密度的人获得了一种设计更加精细的密码表。法国外交家BlaisedeVigenère发明了一种方法来对同一条信息中的不同字母用不同的密码进行加密。这样,同样的E在一个位置可能被M所取代,而在另一个位置的E则有可能以K的面目出现。这样,就可以防止任何人利用频率分析法解密该条信息。
(五)维吉尼亚密码下的扩展
为了能更多的加密字符,本次设计把维吉尼亚密钥个数增加到ASC码中的所有的英文字母大小字符,希望能加密更多的软件,所有的原理和加密方法和维吉尼亚的一样,只是密钥扩展了一下,所用的公式也改变一下,下面提供了,ASC与十进制的对应,在加密的时候能起到一定的帮助作用,此加密功能相当维吉尼亚更具有安全性,对照表如下:
十进制
字符
64
@
65
A
66
B
67
C
68
D
69
E
70
F
71
G
72
H
73
I
74
J
75
K
76
L
77
M
78
N
79
O
80
P
81
Q
82
R
83
S
84
T
85
U
86
V
87
W
88
X
89
Y
90
Z
91
[
92
\
93
]
94
^
95
_
96
'
97
a
98
b
99
c
100
d
101
e
102
f
103
g
104
h
105
i
106
j
107
k
108
l
109
m
110
n
111
o
112
p
113
q
114
r
115
s
116
t
117
u
118
v
119
w
120
x
121
y
122
z
123
{
124
|
125
}
126
~
127
del
软件和界面组合的程序
package chen;
import java.awt.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import java.awt.event.*;
public class Chen extends JFrame implements ActionListener{
/**
*
*/
private static final long serialVersionUID = 1L;
private JLabel ke1=new JLabel(" ");
private JLabel ke2=new JLabel(" ");
private JLabel ke3=new JLabel(" ");
private JLabel ke4=new JLabel(" ");
private JLabel ke5=new JLabel(" ");
private JLabel ke6=new JLabel(" ");
private JLabel mn=new JLabel("输入明文");
private JLabel mo=new JLabel("输入密钥");
private JLabel mt=new JLabel("加密结果");
private JButton ji=new JButton("加密");
private JLabel miWen=new JLabel("输入密文");
private JLabel miYao2=new JLabel("输入密钥");
private JLabel mingWenoutput=new JLabel("解密结果");
private JButton jiemi=new JButton("解密");
private JTextArea textOne=new JTextArea(1,2);
private JTextArea textTwo=new JTextArea(1,2);
private JTextArea textThree=new JTextArea(1,2);
private JTextArea t4=new JTextArea(1,2);
private JTextArea textFive=new JTextArea(1,2);
private JTextArea textSix=new JTextArea(1,2);
int i;
char[] c=new char[100];
char[] k1=new char[100];
int j;
char[] m=new char[100];
char[] k12=new char[100];
public Chen(){
super("维吉尼亚");
ji.addActionListener(this);
jiemi.addActionListener(this);
addWindowListener(listen);
pack();
setVisible(true);
setSize(400,330);
}
public void set(){
JPanel mingwenInput=new JPanel();
mingwenInput.setLayout(new BorderLayout());
mingwenInput.add("West",mn);mingwenInput.add("Center",textOne);
mingwenInput.add("East",ke1);
JPanel miyaoInput=new JPanel();
miyaoInput.setLayout(new BorderLayout());
miyaoInput.add("West",mo);miyaoInput.add("Center",textTwo);
miyaoInput.add("East",ke2);
JPanel miwenOutput=new JPanel();
miwenOutput.setLayout(new BorderLayout());
miwenOutput.add("West",mt);
miwenOutput.add("Center",textThree);
miwenOutput.add("East",ke3);
JPanel shangzhong=new JPanel();
GridLayout s=new GridLayout (3,1);
s.setVgap(5);
shangzhong.setBackground(Color.gray);
shangzhong.setLayout(s);
shangzhong.add(mingwenInput);shangzhong.add(miyaoInput);
shangzhong.add(miwenOutput);
JPanel buttons=new JPanel();
buttons.setLayout(new BorderLayout());
buttons.add("Center",ji);
JPanel shangmianban=new JPanel();
shangmianban.setLayout(new BorderLayout());
shangmianban.setBackground(Color.green);
shangmianban.add("Center",shangzhong);
shangmianban.add("East",buttons);
JPanel miwenInput=new JPanel();
miwenInput.setLayout(new BorderLayout());
miwenInput.add("West",miWen);miwenInput.add("Center",t4);miwenInput.add("East",ke4);
JPanel miyaoxiaInput=new JPanel();
miyaoxiaInput.setLayout(new BorderLayout());
miyaoxiaInput.add("West",miYao2);miyaoxiaInput.add("Center",textFive);
miyaoxiaInput.add("East",ke5);
JPanel mingwenOutput=new JPanel();
mingwenOutput.setLayout(new BorderLayout());
mingwenOutput.add("West",mingWenoutput);mingwenOutput.add("Center",textSix);mingwenOutput.add("East",ke6);
JPanel xiazhong=new JPanel();
GridLayout sz=new GridLayout(3,1);
sz.setVgap(5);
shangmianban.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.black,2),
"加密面板",TitledBorder.CENTER,TitledBorder.ABOVE_TOP));
xiazhong.setBackground(Color.LIGHT_GRAY);
xiazhong.setBounds(1, 2, 3, 4);
xiazhong.setLayout(sz);
xiazhong.add("North",miwenInput);xiazhong.add("Center",miyaoxiaInput);xiazhong.add("South",mingwenOutput);
JPanel button=new JPanel();
button.setLayout(new BorderLayout());
button.add("Center",jiemi);
JPanel xiamianban=new JPanel();
BorderLayout x=new BorderLayout();
x.setVgap(5);
xiamianban.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.MAGENTA,2),
"解密面板",TitledBorder.CENTER,TitledBorder.ABOVE_TOP));
xiamianban.setLayout(x);
xiamianban.add("Center",xiazhong);xiamianban.add("East",button);
xiamianban.setBackground(Color.cyan);
setLayout(new GridLayout(2,1));
add(shangmianban);add(xiamianban);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==ji){
String m=(String)textOne.getText();
String k=(String)textTwo.getText();
for(i=0;i<k.length();i++){
if(k.charAt(i)>='a'&&k.charAt(i)<='z')
k1[i]=(char)(k.charAt(i)-97);
if(k.charAt(i)>='A'&&k.charAt(i)<='Z')
k1[i]=(char)(k.charAt(i)-65);
}
for(i=0;i<m.length();i++){
if(m.charAt(i)>='a'&&m.charAt(i)<='z')
c[i]=(char)((m.charAt(i)-97+k1[i%k.length()])%26+97);
if(m.charAt(i)>='A'&&m.charAt(i)<='Z')
c[i]=(char)((m.charAt(i)-65+k1[i%k.length()])%26+65);
}
textThree.setText( "");
textThree.append(new String(c));
}
else if(e.getSource()==jiemi) {
String c=(String)t4.getText();
String k2=(String)textFive.getText();
for(i=0;i<k2.length();i++){
if(k2.charAt(i)>='a'&&k2.charAt(i)<='z')
k12[i]=(char)(k2.charAt(i)-97);
if(k2.charAt(i)>='A'&&k2.charAt(i)<='Z')
k12[i]=(char)(k2.charAt(i)-65);
}
for(i=0;i<c.length();i++)
{
if(c.charAt(i)>='a'&&c.charAt(i)<='z')
m[i]=(char)((c.charAt(i)-97-k12[i%k2.length()]+26)%26+97);
if(c.charAt(i)>='A'&&c.charAt(i)<='Z')
m[i]=(char)((c.charAt(i)-65-k12[i%k2.length()]+26)%26+65);
}
textSix.setText("");
textSix.append(new String(m));
}
}
private WindowCloser listen=new WindowCloser();
private class WindowCloser extends WindowAdapter{
public void windowClosing(final WindowEvent we){
dispose();
}
}
public static void main(String[] args) {
Chen chen=new Chen();
chen.set();
}
}
三、界面的设计
界面设计是为了满足软件专业化标准化的需求而产生的对软件的使用界面进行美化优化规范化的设计分支。具体包括软件启动封面设计,软件框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计,安装过程设计,包装及商品化在设计的过程中的关键问题。
(一)软件启动封面设计-
应使软件启动封面最终为高清晰度的图像,如软件启动封面需在不同的平台、操作系统上使用将考虑转换不同的格式,并且对选用的色彩不宜超过256色,最好为216色安全色。软件启动封面大小多为主流显示器分辨率的1/6大。如果是系列软件将考虑整体设计的统一和延续性。在上面应该醒目的标注制作或支持的公司标志、产品商标,软件名称,版本号,网址,版权声明,序列号等信息,以树立软件形象,方便使用者或购买者在软件启动的时候得到提示。插图宜使用具有独立版权的,象征性强的,识别性高的,视觉传达效果好的图形,若使用摄影也应该进行数位处理,以形成该软件的个性化特征
(二)软件框架设计
软件的框架设计就复杂得多,因为涉及软件的使用功能,应该对该软件产品的程序和使用比较了解,这就需要设计师有一定的软件跟进经验,能够快速的学习软件产品,并且在和软件产品的程序开发员及程序使用对象进行共同沟通,以设计出友好的,独特的,符合程序开发原则的软件框架。软件框架设计应该简洁明快,尽量少用无谓的装饰,应该考虑节省屏幕空间,各种分辨率的大小,缩放时的状态和原则,并且为将来设计的按钮,菜单,标签,滚动条及状态栏预留位置。设计中将整体色彩组合进行合理搭配,将软件商标放在显著位置,主菜单应放在左边或上边,滚动条放在右边,状态栏放在下边,以符合视觉流程和用户使用心理
(三)软件按钮设计
软件按钮设计应该具有交互性,即应该有3到6种状态效果:点击时状态;鼠标放在上面但未点击的状态;点击前鼠标未放在上面时的状态;点击后鼠标未放在上面时的状态;不能点击时状态;独立自动变化的状态。按钮应具备简洁的图示效果,应能够让使用者产生功能关联反应,群组内按钮应该风格统一,功能差异大的按钮应该有所区别。
软件面板设计应该具有缩放功能,面板应该对功能区间划分清晰,应该和对话框,弹出框等风格匹配,尽量节省空间,切换方便。
(四)菜单设计
菜单设计一般有选中状态和未选中状态,左边应为名称,右边应为快捷键,如果有下级菜单应该有下级箭头符号,不同功能区间应该用线条分割。
(五)标签设计
标签设计应该注意转角部分的变化,状态可参考按钮。
(六)图标设计
图标设计色彩不宜超过64色,大小为16x16、32x32两种,图标设计是方寸艺术,应该加以着重考虑视觉冲击力,它需要在很小的范围表现出软件的内涵,所以很多图标设计师在设计图标时使用简单的颜色,利用眼睛对色彩和网点的空间混合效果,做出了许多精彩图标。
(七)滚动条及状态栏设计
滚动条主要是为了对区域性空间的固定大小中内容量的变换进行设计,应该有上下箭头,滚动标等,有些还有翻页标。状态栏是为了对软件当前状态的显示和提示。
(八)安装过程设计
安装过程设计主要是将软件安装的过程进行美化,包括对软件功能进行图示化。
(九)包装及商品化
最后软件产品的包装应该考虑保护好软件产品,功能的宣传融合于美观中,可以印刷部分产品介绍,产品界面设计。
软件界面其中的主要部分即为UI
UI(User Interface)即用户界面,也称人机界面。是指用户和某些系统进行交互方法的集合,这些系统不单单指电脑程序,还包括某种特定的机器,设备,复杂的工具等。
软件设计可分为两个部分:编码设计与UI设计。编码设计大家都很熟悉,但是 UI设计还是一个很陌生的词,即使一些专门从事网站与多媒体设计的人也不完全理解UI的意思。UI的本意是用户界面,是英文User和 interface的缩写。从字面上看是用户与界面2个组成部分,但实际上还包括用户与界面之间的交互关系。
界面设计。在漫长的软件发展中,界面设计工作一直没有被重视起来。做界面设计的人也被贬义的称为“美工”。其实软件界面设计就像工业产品中的工业造型设计一样,是产品的重要买点。一个友好美观的界面会给人带来舒适的视觉享受,拉近人与电脑的距离,为商家创造卖点。界面设计不是单纯的美术绘画,他需要定位使用者、使用环境、使用方式并且为最终用户而设计,是纯粹的科学性的艺术设计。检验一个界面的标
展开阅读全文