173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

设计一个简单的加密算法

keros@mark 2022-10-26 资讯中心

今天给各位分享设计一个简单的加密算法的知识,如果能碰巧解决你现在面临的问题,别忘了关注本站。

本文目录一览

设计一个简单的数据加密算法

// ecfileDlg.cpp : implementation file

//

#include "stdafx.h"

#include "ecfile.h"

#include "ecfileDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CEcfileDlg dialog

CEcfileDlg::CEcfileDlg(CWnd* pParent /*=NULL*/)

: CDialog(CEcfileDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CEcfileDlg)

m_path = _T("");

m_pass = _T("");

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);

}

void CEcfileDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CEcfileDlg)

DDX_Text(pDX, IDC_PASSWORD, m_path);

DDX_Text(pDX, IDC_PASS1, m_pass);

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CEcfileDlg, CDialog)

//{{AFX_MSG_MAP(CEcfileDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_E, OnE)

ON_BN_CLICKED(IDC_D, OnD)

ON_BN_CLICKED(IDC_BROW, OnBrow)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

BOOL CEcfileDlg::OnInitDialog()

{

CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu-AppendMenu(MF_SEPARATOR);

pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

SetIcon(m_hIcon, TRUE);

SetIcon(m_hIcon, FALSE);

return TRUE;

}

void CEcfileDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CEcfileDlg::OnPaint()

{

CDialog::OnPaint();

}

HCURSOR CEcfileDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CEcfileDlg::OnE()

{

UpdateData(TRUE);

if(m_path == "")

{

AfxMessageBox("怎么没有选择要加密的文件就开始加密啊?");

return;

}

UpdateData(TRUE);

if(m_pass == "")

{

AfxMessageBox("没有写上密码");

return;

}

if(ecfile(m_path))

{

MessageBox("加密成功了已经");

}

else

{

MessageBox("没加密成功");

}

}

void CEcfileDlg::OnD()

{

UpdateData(TRUE);

if(m_path == "")

{

AfxMessageBox("怎么没有选择要加密的文件就开始解密啊?");

return;

}

UpdateData(TRUE);

if(m_pass == "")

{

AfxMessageBox("没有写上密码");

return;

}

if(dcfile(m_path))

{

MessageBox("解密成功了");

}

else

{

MessageBox("解密失败了");

}

}

void CEcfileDlg::OnBrow()

{

CFileDialog dlg(TRUE);

if(dlg.DoModal() == IDOK)

{

m_path = dlg.GetPathName();

UpdateData(FALSE);

}

else

{

return;

}

}

//给文件加密的函数

BOOL CEcfileDlg::ecfile(LPCTSTR fpath)

{

char *data;

CFile *file;

DWORD flen;

m_password = epass();

file = new CFile;

if ( !file-Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite))

{

return FALSE;

}

flen = file-GetLength();

data = new char[(int)flen];

file-SeekToBegin();

file-Read(data, flen);

for(int i=0; i(int)flen; i++)

{

data[i] ^= m_password;

data[i] ^= flen;

}

file-SeekToBegin();

file-Write(data, flen);

delete[] data;

//添加密码验证信息

char cpass[5] = "love";

for(int j=0; j5; j++)

{

cpass[j] ^= m_password;

}

file-SeekToEnd();

file-Write(cpass, 5);

file-Close();

delete file;

return TRUE;

}

//给文件解密的函数

BOOL CEcfileDlg::dcfile(LPCTSTR fpath)

{

char *data;

CFile *file;

DWORD flen;

char love[5];

file = new CFile;

if( !file-Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite))

{

return FALSE;

}

flen = file-GetLength();

data = new char[(int)flen];

//检验密码是不是正确

file-Seek(-5, CFile::end);

file-Read(love, 5);

m_password = epass();

for(int i=0; i5; i++)

{

love[i] ^= m_password;

}

if(strcmp(love, "love")!=0)

{

return FALSE;

}

//解密

file-SeekToBegin();

file-Read(data, flen);

for(int j=0; j(int)flen; j++)

{

data[j] ^= m_password;

data[j] ^= (flen-5);

}

file-SeekToBegin();

file-Write(data, flen);

file-SetLength(flen-5);

file-Close();

delete[] data;

delete file;

return TRUE;

}

//获得密码的函数

__int64 CEcfileDlg::epass()

{

DWORD plen;

char *ppass;

__int64 mc= 8757735233305;

UpdateData(TRUE);

ppass = m_pass.GetBuffer(0);

plen = strlen(ppass);

for(int i=0; i(int)plen; i++)

{

mc ^= ppass[i]|128;

}

return mc;

}

用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密

给你个MD5的加密算法

package test;

import java.security.MessageDigest;

/**

* pTitle: /p

* pDescription: /p

* pCopyright: Copyright (c) 2003/p

* pCompany: /p

* @author unascribed

* @version 1.0

*/

public class StringUtil {

private final static String[] hexDigits = {

"0", "1", "2", "3", "4", "5", "6", "7",

"8", "9", "a", "b", "c", "d", "e", "f"};

/**

* 转换字节数组为16进制字串

* @param b 字节数组

* @return 16进制字串

*/

public static String byteArrayToHexString(byte[] b) {

StringBuffer resultSb = new StringBuffer();

for (int i = 0; i b.length; i++) {

resultSb.append(byteToHexString(b[i]));

}

return resultSb.toString();

}

private static String byteToHexString(byte b) {

int n = b;

if (n 0)

n = 256 + n;

int d1 = n / 16;

int d2 = n % 16;

return hexDigits[d1] + hexDigits[d2];

}

public static String MD5Encode(String origin) {

String resultString = null;

try {

resultString=new String(origin);

MessageDigest md = MessageDigest.getInstance("MD5");

resultString=byteArrayToHexString(md.digest(resultString.getBytes()));

}

catch (Exception ex) {

}

return resultString;

}

public static void main(String[] args){

System.err.println(MD5Encode("a"));

}

}

在RFC 1321中,给出了Test suite用来检验你的实现是否正确:

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b

用c语言设计一个简单地加密算,解密算法,并说明其中的原理

可能很长 ,这是在我以前一个程序里摘出来的。

原理:用户输入创建密码,机器读取,并把每一位密码进行加密,这里就是把每一位的 ASCII码加一(也可以有其他的加密方式),然后保存在文件里。解密时从文件中读取保存的乱码,然后把它每一位的ascII码减一 在与你输入的密码比较,正确既可以进入。

#define CODE_SIZE 10

int password()

{

FILE *fp;

char s1[CODE_SIZE], s2[CODE_SIZE], s3[CODE_SIZE], fun;

while (1)

{

fp = fopen("password.txt", "r");

if (fp == NULL)

{

printf("第一次运行,请输入初始密码(最多8位):\n");

scanf("%s", s1);

printf("请再次输入初始密码:\n");

scanf("%s", s2);

if (strcmp(s1, s2) == 0)

{

fp = fopen("password.txt", "w+");

if (fp == NULL)

{

printf("创建文件失败退出\n");

getch();

exit(1);

}

else

{

//对s1加密

for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)

{

s1[i] = s1[i] + i;

}

fputs(s1, fp);

printf("初始密码创建完成.\n");

}

}

else

{

printf("两次输入的密码不一致!\n");

}

fclose(fp);

}

else

{

fgets(s1, CODE_SIZE, fp);

fclose(fp);

printf("输入密码:\n");

scanf("%s", s2);

//对s1解密

for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)

{

s1[i] = s1[i] - i;

}

loop:

if (strcmp(s1, s2) == 0)

{

printf("-----密码正确-----\n");

printf("-----请选择功能-----\n");

printf("-----1:修改密码-----\n");

printf("-----2:进入通讯录-----\n");

scanf("%d", fun);

switch (fun)

{

case 1: printf("请输入新密码\n");

scanf("%s", s1);

printf("请再次输入新密码\n");

scanf("%s", s2);

if (strcmp(s1, s2) == 0)

{

fp = fopen("password.txt", "w+");

if (fp == NULL)

{

printf("文件错误!\n");

}

else

{ //对s1加密

for (int i = 0; iCODE_SIZEs1[i] != ' '; i++)

{

s1[i] = s1[i] + i;

}

fputs(s1, fp);

fclose(fp);

printf("密码修改成功\n");

}

}

else

{

printf("两次输入的密码不一致,修改失败\n");

}

break;

case 2: return 1;

default: printf("无效指令\n");

}

}

else

{

printf("密码错误\n请重新输入\n");

scanf("%s", s2);

goto loop;

}

}

printf("------------------\n\n\n\n");

}

}

智能化时代的到来涉及了各种核心算法,保护算法就能保障开发者权益,杜绝市面上各种山寨品,加密芯片恰好能起到很好的保护作用,如何选择加密芯片呢?KEROS加密芯片专注于加密领域十余年,行业首选。
1.安全性:采用国际通用aes256算法加密并同时通过KAS传送,除基本认证之外,利用2K安全EEPROM,用户可以自己管理密钥和数据,实现双重保护。
2.唯一性:以定制的方式为每一位用户单独定制“专属型号CID”,多用户之间算法不兼容,并且采用固化的方法直接将算法固化到晶圆上而无需烧入。
3.序列号:每颗芯片制造生产时具有5字节全球唯一SN序列号,每颗芯片SN都不会重复。
4.防抄特性:每颗芯片都有自己独特的密钥系统,破解单颗芯片只对这颗芯片对应的产品有效,对整个同类型的产品是无效的,依旧无法通过验证。而且KEROS采用ASIC方法设计,芯片内为纯逻辑电路,封装内有40多层逻辑电路整合了10万多个逻辑门,爆力刨片破解难度可想而知。
5.安全存储:用户可以将保密数据加密之后安全的存放到EEPROM中。设计一个简单的加密算法的介绍就聊到这里吧,感谢你花时间阅读本站内容。

本文标签:设计一个简单的加密算法

产品列表
产品封装
友情链接