md5課程設計
㈠ 求密碼學課程設計 MD5的實現 源代碼 高分
我有C語言的實現代碼。
你把下面的代碼復制下來,保存成md5lib.h,然後在C代碼中:
#include "md5lib.h" 即可
其中:
char* MDString (char *string);是對字元串進行MD5
char* MDFile (char *filename);是對文件進行MD5
以下是代碼
//--------------------------------
/* MD5lib.h - md5 library
*/
/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
rights reserved.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
These notices must be retained in any copies of any part of this
documentation and/or software.
*/
/* The following makes MD default to MD5 if it has not already been
defined with C compiler flags.
*/
#include <stdio.h>
#include <time.h>
#include <string.h>
#define MD 5
/* GLOBAL.H - RSAREF types and constants
*/
/* PROTOTYPES should be set to one if and only if the compiler supports
function argument prototyping.
The following makes PROTOTYPES default to 0 if it has not already
been defined with C compiler flags.
*/
#ifndef PROTOTYPES
#define PROTOTYPES 0
#endif
/* POINTER defines a generic pointer type */
typedef unsigned char *POINTER;
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
/* UINT4 defines a four byte word */
typedef unsigned long int UINT4;
/* PROTO_LIST is defined depending on how PROTOTYPES is defined above.
If using PROTOTYPES, then PROTO_LIST returns the list, otherwise it
returns an empty list.
*/
#if PROTOTYPES
#define PROTO_LIST(list) list
#else
#define PROTO_LIST(list) ()
#endif
/* Length of test block, number of test blocks.
*/
#define TEST_BLOCK_LEN 1000
#define TEST_BLOCK_COUNT 1000
/* Constants for MD5Transform routine.
*/
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21
char* MDString PROTO_LIST ((char *));
char* MDFile PROTO_LIST ((char *));
char* hmac_md5(char* text, char* key);
typedef struct {
UINT4 state[4]; /* state (ABCD) */
UINT4 count[2]; /* number of bits, molo 2^64 (lsb first) */
unsigned char buffer[64]; /* input buffer */
} MD5_CTX;
/*void MD5Init PROTO_LIST ((MD5_CTX *));
void MD5Update PROTO_LIST
((MD5_CTX *, unsigned char *, unsigned int));
void MD5Final PROTO_LIST ((unsigned char [16], MD5_CT X *));
static void MD5Transform PROTO_LIST ((UINT4 [4], unsigned char [64]));
static void Encode PROTO_LIST
((unsigned char *, UINT4 *, unsigned int));
static void Decode PROTO_LIST
((UINT4 *, unsigned char *, unsigned int));
static void MD5_memcpy PROTO_LIST ((POINTER, POINTER, unsigned int));
static void MD5_memset PROTO_LIST ((POINTER, int, unsigned int));
*/
static unsigned char PADDING[64] = {
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
/* F, G, H and I are basic MD5 functions.
*/
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))
/* ROTATE_LEFT rotates x left n bits.
*/
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) {(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b);}
#define GG(a, b, c, d, x, s, ac) {(a) += G ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b);}
#define HH(a, b, c, d, x, s, ac) {(a) += H ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b);}
#define II(a, b, c, d, x, s, ac) {(a) += I ((b), (c), (d)) + (x) + (UINT4)(ac); (a) = ROTATE_LEFT ((a), (s)); (a) += (b);}
void MD5Init (MD5_CTX *context);
void MD5Update(MD5_CTX *context, unsigned char *input,unsigned int inputLen);
void MD5Final (unsigned char digest[16], MD5_CTX *context);
static void MD5Transform (UINT4 [4], unsigned char [64]) ;
static void Encode(unsigned char *, UINT4 *, unsigned int);
static void Decode (UINT4 *, unsigned char *, unsigned int);
static void MD5_memcpy(POINTER, POINTER, unsigned int);
static void MD5_memset(POINTER, int, unsigned int);
/* MD5 initialization. Begins an MD5 operation, writing a new context.
*/
void MD5Init (MD5_CTX *context)
/* context */
{
context->count[0] = context->count[1] = 0;
/* Load magic initialization constants.
*/
context->state[0] = 0x67452301;
context->state[1] = 0xefcdab89;
context->state[2] = 0x98badcfe;
context->state[3] = 0x10325476;
}
/* MD5 block update operation. Continues an MD5 message-digest
operation, processing another message block, and updating the
context.
*/
void MD5Update (MD5_CTX *context, unsigned char *input,unsigned int inputLen )
/* context */
/* input block */
/* length of input block */
{
unsigned int i, index, partLen;
/* Compute number of bytes mod 64 */
index = (unsigned int)((context->count[0] >> 3) & 0x3F);
/* Update number of bits */
if ((context->count[0] += ((UINT4)inputLen << 3))
< ((UINT4)inputLen << 3))
context->count[1]++;
context->count[1] += ((UINT4)inputLen >> 29);
partLen = 64 - index;
/* Transform as many times as possible.
*/
if (inputLen >= partLen) {
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)input, partLen);
MD5Transform (context->state, context->buffer);
for (i = partLen; i + 63 < inputLen; i += 64)
MD5Transform (context->state, &input[i]);
index = 0;
}
else
i = 0;
/* Buffer remaining input */
MD5_memcpy
((POINTER)&context->buffer[index], (POINTER)&input[i],
inputLen-i);
}
/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context.
*/
void MD5Final (unsigned char digest[16], MD5_CTX *context)
/* message digest */
/* context */
{
unsigned char bits[8];
unsigned int index, padLen;
/* Save number of bits */
Encode (bits, context->count, 8);
/* Pad out to 56 mod 64.
*/
index = (unsigned int)((context->count[0] >> 3) & 0x3f);
padLen = (index < 56) ? (56 - index) : (120 - index);
MD5Update (context,(unsigned char*) PADDING, padLen);
/* Append length (before padding) */
MD5Update (context, bits, 8);
/* Store state in digest */
Encode (digest, context->state, 16);
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)context, 0, sizeof (*context));
}
/* MD5 basic transformation. Transforms state based on block.
*/
static void MD5Transform (UINT4 state[4],
unsigned char block[64])
{
int i=0;
UINT4 a = state[0], b = state[1], c = state[2], d = state[3], x[16];
Decode (x, block, 64);
/* Round 1 */
FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
/* Round 2 */
GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
GG (d, a, b, c, x[10], S22, 0x2441453); /* 22 */
GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
/* Round 3 */
HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
HH (b, c, d, a, x[ 6], S34, 0x4881d05); /* 44 */
HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
/* Round 4 */
II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
state[0] += a;
state[1] += b;
state[2] += c;
state[3] += d;
/* Zeroize sensitive information.
*/
MD5_memset ((POINTER)x, 0, sizeof (x));
}
/* Encodes input (UINT4) into output (unsigned char). Assumes len is
a multiple of 4.
*/
static void Encode (unsigned char *output,
UINT4 *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4) {
output[j] = (unsigned char)(input[i] & 0xff);
output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
}
}
/* Decodes input (unsigned char) into output (UINT4). Assumes len is
a multiple of 4.
*/
static void Decode (UINT4 *output,
unsigned char *input,
unsigned int len)
{
unsigned int i, j;
for (i = 0, j = 0; j < len; i++, j += 4)
output[i] = ((UINT4)input[j]) | (((UINT4)input[j+1]) << 8) |
(((UINT4)input[j+2]) << 16) | (((UINT4)input[j+3]) << 24);
}
/* Note: Replace "for loop" with standard memcpy if possible.
*/
static void MD5_memcpy (POINTER output,
POINTER input,
unsigned int len)
{
unsigned int i;
for (i = 0; i < len; i++)
output[i] = input[i];
}
/* Note: Replace "for loop" with standard memset if possible.
*/
static void MD5_memset (POINTER output,
int value,
unsigned int len)
{
unsigned int i;
for (i = 0; i < len; i++)
((char *)output)[i] = (char)value;
}
/* Digests a string and prints the result.
*/
char* MDString (char *string)
{
MD5_CTX context;
unsigned char digest[16];
char output1[32];
static char output[33]={""};
unsigned int len = strlen (string);
int i;
MD5Init (&context);
MD5Update (&context, (unsigned char*)string, len);
MD5Final (digest, &context);
for (i = 0; i < 16; i++)
{sprintf(&(output1[2*i]),"%02x",(unsigned char)digest[i]);
sprintf(&(output1[2*i+1]),"%02x",(unsigned char)(digest[i]<<4));
}
for(i=0;i<32;i++)
output[i]=output1[i];
return output;
}
/* Digests a file and prints the result.
*/
char* MDFile (char *filename)
{ static char output[33]={""};
FILE *file;
MD5_CTX context;
int len;
unsigned char buffer[1024], digest[16];
int i;
char output1[32];
if ((file = fopen (filename, "rb")) == NULL)
{ printf ("%s can't be openedn", filename);
return 0;
}
else {
MD5Init (&context);
while (len = fread (buffer, 1, 1024, file))
MD5Update (&context, buffer, len);
MD5Final (digest, &context);
fclose (file);
for (i = 0; i < 16; i++)
{sprintf(&(output1[2*i]),"%02x",(unsigned char)digest[i]);
sprintf(&(output1[2*i+1]),"%02x",(unsigned char)(digest[i]<<4));
}
for(i=0;i<32;i++)
output[i]=output1[i];
return output;
}
}
char* hmac_md5(char* text,char* key)
{
char digest[16];
char output1[32];
static char output[33]={""};
MD5_CTX context;
unsigned char k_ipad[65]; /* inner padding -
* key XORd with ipad
*/
unsigned char k_opad[65]; /* outer padding -
* key XORd with opad
*/
unsigned char tk[16];
int i;
int text_len = strlen (text);
int key_len=strlen(key);
/* if key is longer than 64 bytes reset it to key=MD5(key) */
if (key_len > 64) {
MD5_CTX tctx;
MD5Init(&tctx);
MD5Update(&tctx,(unsigned char*) key, key_len);
MD5Final(tk, &tctx);
key = (char*)tk;
key_len = 16;
}
/*
* the HMAC_MD5 transform looks like:
*
* MD5(K XOR opad, MD5(K XOR ipad, text))
*
* where K is an n byte key
* ipad is the byte 0x36 repeated 64 times
* opad is the byte 0x5c repeated 64 times
* and text is the data being protected
*/
/* start out by storing key in pads */
/*bzero( k_ipad, sizeof k_ipad);
bzero( k_opad, sizeof k_opad);
*/
for(i=0;i<65;i++)
k_ipad[i]=(unsigned char)0;
for(i=0;i<65;i++)
k_opad[i]=(unsigned char)0;
/*b( key, k_ipad, key_len);
b( key, k_opad, key_len);
*/
for(i=0;i<key_len;i++)
{k_ipad[i]=(unsigned char)key[i];
k_opad[i]=(unsigned char)key[i];
}
/* XOR key with ipad and opad values */
for (i=0; i<64; i++) {
k_ipad[i] ^= 0x36;
k_opad[i] ^= 0x5c;
}
/*
* perform inner MD5
*/
MD5Init(&context); /* init context for 1st
* pass */
MD5Update(&context, k_ipad, 64); /* start with inner pad */
MD5Update(&context, (unsigned char*)text, text_len); /* then text of datagram
*/
MD5Final((unsigned char*)digest, &context); /* finish up 1st pass */
/*
* perform outer MD5
*/
MD5Init(&context); /* init context for 2nd
* pass */
MD5Update(&context, k_opad, 64); /* start with outer pad */
MD5Update(&context,(unsigned char*) digest, 16); /* then results of 1st
* hash */
MD5Final((unsigned char*)digest, &context); /* finish up 2nd pass */
for (i = 0; i < 16; i++)
{sprintf(&(output1[2*i]),"%02x",(unsigned char)digest[i]);
sprintf(&(output1[2*i+1]),"%02x",(unsigned char)(digest[i]<<4));
}
for(i=0;i<32;i++)
output[i]=output1[i];
return output;
}
㈡ 急求機械課程設計 帶式傳送 2級同軸式圓柱齒輪 設計
目 錄
第一部分 設計任務書----------------------------------------------------------------3第二部分 電傳動方案的分析與擬定---------------------------------------------------5第三部分 電動機的選擇計算----------------------------------------------------------6第四部分 各軸的轉速、轉矩計算------------------------------------------------------7第五部分 聯軸器的選擇-------------------------------------------------------------9第六部分 錐齒輪傳動設計---------------------------------------------------------10第七部分 鏈傳動設計--------------------------------------------------------------12第八部分 斜齒圓柱齒輪設計-------------------------------------------------------14第九部分 軸的設計----------------------------------------------------------------17第十部分 軸承的設計及校核-------------------------------------------------------20第十一部分 高速軸的校核---------------------------------------------------------22第十二部分 箱體設計---------------------------------------------------------------23第十三部分 設計小結---------------------------------------------------------------24
第一部分 設計任務書
1.1 機械設計課程的目的
機械設計課程設計是機械類專業和部分非機械類專業學生第一次較全面的機械設計訓練,是機械設計和機械設計基礎課程重要的綜合性與實踐性教學環節。其基本目的是:
(1) 通過機械設計課程的設計,綜合運用機械設計課程和其他有關先修課程的理論,結合生產實際知識,培養分析和解決一般工程實際問題的能力,並使所學知識得到進一步鞏固、深化和擴展。
(2) 學習機械設計的一般方法,掌握通用機械零件、機械傳動裝置或簡單機械的設計原理和過程。
(3) 進行機械設計基本技能的訓練,如計算、繪圖、熟悉和運用設計資料(手冊、圖冊、標准和規范等)以及使用經驗數據,進行經驗估算和數據處理等。
1.2 機械設計課程的內容
選擇作為機械設計課程的題目,通常是一般機械的傳動裝置或簡單機械。
課程設計的內容通常包括:確定傳動裝置的總體設計方案;選擇電動機;計算傳動裝置的運動和動力參數;傳動零件、軸的設計計算;軸承、聯軸器、潤滑、密封和聯接件的選擇及校核計算;箱體結構及其附件的設計;繪制裝配工作圖及零件工作圖;編寫設計計算說明書。
在設計中完成了以下工作:
① 減速器裝配圖1張(A0或A1圖紙);
② 零件工作圖2~3張(傳動零件、軸、箱體等);
③ 設計計算說明書1份,6000~8000字。
1.3 機械設計課程設計的步驟
機械設計課程設計的步驟通常是根據設計任務書,擬定若干方案並進行分析比較,然後確定一個正確、合理的設計方案,進行必要的計算和結構設計,最後用圖紙表達設計結果,用設計計算說明書表示設計依據。
機械設計課程設計一般可按照以下所述的幾個階段進行:
1.設計准備
① 分析設計計劃任務書,明確工作條件、設計要求、內容和步驟。
② 了解設計對象,閱讀有關資料、圖紙、觀察事物或模型以進行減速器裝拆試驗等。
③ 浮系課程有關內容,熟悉機械零件的設計方法和步驟。
④ 准備好設計需要的圖書、資料和用具,並擬定設計計劃等。
2.傳動裝置總體設計
① 確定傳動方案——圓柱齒輪傳動,畫出傳動裝置簡圖。
② 計算電動機的功率、轉速、選擇電動機的型號。
③ 確定總傳動比和分配各級傳動比。
④ 計算各軸的功率、轉速和轉矩。
3.各級傳動零件設計
① 減速器內的傳動零件設計(齒輪傳動)。
4.減速器裝配草圖設計
① 選擇比例尺,合理布置試圖,確定減速器各零件的相對位置。
② 選擇聯軸器,初步計算軸徑,初選軸承型號,進行軸的結構設計。
③ 確定軸上力作用點及支點距離,進行軸、軸承及鍵的校核計算。
④ 分別進行軸系部件、傳動零件、減速器箱體及其附件的結構設計。
5.減速器裝配圖設計
① 標注尺寸、配合及零件序號。
② 編寫明細表、標題欄、減速器技術特性及技術要求。
③ 完成裝配圖。
6.零件工作圖設計
① 軸類零件工作圖。
② 齒輪類零件工作圖。
③ 箱體類零件工作圖。
第一部分 題目及要求
卷揚機傳動裝置的設計
1. 設計題目
設計一卷揚機的傳動裝置。傳動裝置簡圖如下圖所示。
(1)卷揚機數據
卷揚機繩牽引力F(N)、繩牽引速度v(m/s)及捲筒直徑D(mm)見附表。
(2)工作條件
用於建築工地提升物料,空載啟動,連續運轉,三班制工作,工作平穩。
(3) 使用期限
工作期限為十年,每年工作300天,三班制工作,每班工作4小時,檢修期間隔為三年。
(4) 產批量及加工條件
小批量生產,無鑄鋼設備。
2. 設計任務
1)確定傳動方案;
2)選擇電動機型號;
3)設計傳動裝置;
4)選擇聯軸器。
3. 具體作業
1)減速器裝配圖一張;
2)零件工作圖二張(大齒輪,輸出軸);
3)設計說明書一份。
4. 數據表
牽引力F/N 12 10 8 7
牽引速度v/(m/s) 0.3,0.4 0.3,0.4,0.5,0.6
捲筒直徑D/mm 470,500 420,430,450,470,500 430,450,500 440,460,480
卷揚機傳動裝置的設計
5. 設計題目
設計一卷揚機的傳動裝置。傳動裝置簡圖如下圖所示。
(1)卷揚機數據
卷揚機繩牽引力F(N)、繩牽引速度v(m/s)及捲筒直徑D(mm)見附表。
(2)工作條件
用於建築工地提升物料,空載啟動,連續運轉,三班制工作,工作平穩。
(5) 使用期限
工作期限為十年,每年工作300天,三班制工作,每班工作4小時,檢修期間隔為三年。
(6) 產批量及加工條件
小批量生產,無鑄鋼設備。
6. 設計任務
1)確定傳動方案;
2)選擇電動機型號;
3)設計傳動裝置;
4)選擇聯軸器。
7. 具體作業
1)減速器裝配圖一張;
2)零件工作圖二張(大齒輪,輸出軸);
3)設計說明書一份。
8. 數據表
牽引力F/N 12 10 8 7
牽引速度v/(m/s) 0.3,0.4 0.3,0.4,0.5,0.6
捲筒直徑D/mm 470,500 420,430,450,470,500 430,450,500 440,460,480
第二部分 傳動方案的分析與擬定
確定總傳動比:
由於Y系列三相非同步電動機的同步轉速有750,1000,1500和3000r/min四種可供選擇.根據原始數據,得到卷揚機捲筒的工作轉速為
按四種不同電動機計算所得的總傳動比分別是:
電動機同步轉速
750 1000 1500 3000
系統總傳動比
32.71 43.61 65.42 130.83
確定電動機轉速:
綜合考慮電動機和傳動裝置的尺寸、重量、價格以及總傳動比,750轉的低速電動機傳動比雖小,但電動機極數大價格高,故不可取。3000轉的電動機重量輕,價格便宜,但總傳動比大,傳動裝置外廓尺寸大,製造成本高,結構不緊湊,也不可取。剩下兩種相比,如為使傳動裝置結構緊湊,選用1000轉的電動機較好;如考慮電動機重量和價格,則應選用1500轉的電動機。現選用1500轉的電動機,以節省成本。
確定傳動方案:
驗算:通常V帶傳動的傳動比常用范圍為 ,二級圓柱齒輪減速器為 ,則總傳動比的范圍為 ,因此能夠滿足以上總傳動比為65.42的要求。
第三部分 電動機的選擇計算
1、確定電動機類型
按工作要求和條件,選用Y系列籠型三相非同步電動機,封閉式結構。
2、確定電動機的功率
工作機的功率
KW
效率的選擇:
1. V帶傳動效率: η1 = 0.96
2. 7級精度圓柱齒輪傳動:η2 = 0.98
3. 滾動軸承: η3 = 0.99
4. 彈性套柱銷聯軸器: η4 = 0.99
5. 傳動滾筒效率: η5 = 0.96
傳動裝置總效率為
工作機所需電動機功率
kw
因載荷平穩,電動機額定功率 略大於 即可。由Y系列電動機技術數據,選電動機的額定功率 為7.5 kw,結合其同步轉速,選定電動機的各項參數如下:
取同步轉速: 1500r/min ——4級電動機
型號: Y132M-4
額定功率: 7.5kW
滿載功率: 1440r/min
堵轉轉矩/額定轉矩: 2.2
最大轉矩/額定轉矩: 2.2
第四部分 確定傳動裝置總傳動比和分配各級傳動比
1、確定總傳動比
2、分配各級傳動比
取V帶傳動的傳動比 ,則減速器的傳動比 為
取兩級圓柱齒輪減速器高速級的傳動比
則低速級的傳動比
第五部分 運動參數及動力參數計算
0軸(電動機軸):
P0 = Pd =7.2 kW
n0 = nm = 1440 r/min
T0 = 9550×( )= N•m
1軸(高速軸):
P1 = P0η1 = kW
n1 = = r/min
T1 = 9550×( )= N•m
2軸(中間軸):
P2 = P1η2η3 = kW
n2 = r/min
T2 = 9550×( )= N•m
3軸(低速軸):
P3 = P2η2η3 = kW
n3 = r/min
T3 = 9550×( )= N•m
4軸(輸出軸):
P4 = P3η3η4 = kW
n4 = r/min
T4 = 9550×( )= N•m
輸出軸功率或輸出軸轉矩為各軸的輸入功率或輸入轉矩乘以軸承效率(0.99),即
P』= 0.99P
軸名 功率P(kW) 轉矩T(N•m) 轉速
n(r/min) 傳動比
i 效率
η
輸入 輸出 輸入 輸出
電動機軸 7.20 47.75 1440
3.8 0.96
1軸 6.91 3.047 155.91 154.35 378.95
4.809 0.97
2軸 6.70 2.896 811.99 803.83 78.80
3.435 0.97
3軸 6.50 2.753 2705.97 2678.91 22.94
1 0.98
輸出軸 6.37 2.590 2651.85 2625.33 22.94
第六部分 傳動零件的設計計算
高速級斜齒圓柱齒輪設計
材料選擇:小齒輪40Cr (調質)硬度280HBs;
大齒輪45#鋼(調質)硬度240HBs;(硬度差40HBs)
七級精度,取Z1=21,Z2= =4.809×21=100.989,取Z2=101,
初選螺旋角β=14°,
按齒輪面接觸強度設計:
1) 試選載荷系數 Kt=1.6
2) 由動力參數圖,小齒輪傳遞的轉矩
3) 由表10-7(機械設計)選取齒寬系數
4) 由表10-6查得材料的彈性影響系數
5) 由圖10-21d按齒面硬度查得小齒輪的接觸疲勞強度極限 ;大齒輪的接觸疲勞強度極限 ;
6) 由式10-13計算應力循環次數
7) 由圖10-19查得接觸疲勞壽命系數 ;
8) 計算接觸疲勞許用應力
取失效概率為1%,安全系數S=1,由式(10-12)得
9)由圖10-26(機械設計)得
εα1 = 0.76
εα2 = 0.86
則端面重合度
10)由圖10-30選取區域系數ZH = 2.433
11) 計算許用接觸應力
=
12)計算:
試算小齒輪分度圓直徑 ,由計算公式得
計算圓周速度
計算齒寬b及模數
= 1×60.59 = 60.59 mm
mnt = = mm
h = 2.25 mnt = mm
計算縱向重合度
縱向重合度 =0.318×φdZ1tanβ =
計算載荷系數K
已知,KA=1,取Kv=1.05(由圖10-8查得),由表10-4查得的計算公式
∴KHβ = 1.15+0.18(1+0.6φd2)+0.23×10-3×60.59 = 1.45
由圖10-13,得KFβ = 1.4
由表10-3,得
∴K = KA•Kv•KHα•KHβ = 1×1.05×1.3×1.45 = 1.98
按實際得載荷系數校正所算得德分度圓直徑,由試(10-10a)得
計算模數
mn= =
13) 按齒根彎曲強度設計
由圖10-20c查得小齒輪的彎曲疲勞強度極限 ;大齒輪的彎曲疲勞強度極限 ;
由圖10-18查得彎曲疲勞壽命系數 ;
計算彎曲疲勞許用應力
取彎曲疲勞安全系數S=1.4,由式10-12得
計算載荷系數
K = KA•Kv•KFα•KFβ = 1×1.05×1.3×1.4= 1.91
根據縱向重合度εβ=1.6650,由圖10-28,查得螺旋角影響系數Yβ=0.88
計算當量齒數
= 22.9883
查取齒形系數
由表10-5查得 YFα1=2.69,YFα2=2.20,
查取應力校正系數
由表10-5查得 YSα1=1.56,YSα2=1.79
計算大、小齒輪的 並加以比較
大齒輪的數值較大。
設計計算
經園整,mn=2 mm
∵ ,∴mn=2.5 mm
Z1 = = ,取Z1=25,Z2=120
幾何尺寸計算:
中心距 a =
經園整,a = 187 mm
修正螺旋角, =
∵β變動不大,
∴εα、εβ、ZH無需修正。
計算大、小齒輪的分度直徑
mm
mm
計算齒輪寬度
b = φdd1 = mm
園整後,B2=65mm,B1=70mm
da1 = d1+2ha1 =69.48
da2 = d2+2ha2 = 315.08
df1 = d1-2hf1 = 49.48
df2 = d2-2hf2 =305.08
第九部分 軸的設計
1) 高速軸:
初定最小直徑,選用材料45#鋼,調質處理。取A0=112(下同)
則dmin = A0 = mm
∵最小軸徑處有鍵槽
∴dmin』 = 1.07 dmin = 17.72mm
∵最小直徑為安裝聯軸器外半徑,取KA=1.7,同上所述已選用TL4彈性套柱聯軸器,軸孔半徑d=20mm
∴取高速軸的最小軸徑為20mm。
由於軸承同時受徑向和軸向載荷,故選用單列圓錐滾子軸承按國標T297-94選取30206。
D×d×T=17.25mm
∴軸承處軸徑d=30mm
高速軸簡圖如下:
2)
取l1=38+46=84mm,l3=72mm,取擋圈直徑D=28mm,取d2=d4=25mm,d3=30mm,l2=l4=26.5mm,d1=d5=20mm。
齒輪輪轂寬度為46mm,取l5=28mm。
聯軸器用鍵:園頭普通平鍵。
b×h=6×6,長l=26mm
齒輪用鍵:同上。b×h=6×6,長l=10mm,倒角為2×45°
3) 中間軸:
中間軸簡圖如下:
初定最小直徑dmin= =22.1mm
選用30305軸承,
d×D×T = 25×62×18.25mm
∴d1=d6=25mm,取l1=27mm,l6=52mm
l2=l4=10mm,d2=d4=35mm,l3=53mm
d3=50mm,d5=30mm,l5=1.2×d5=36mm
齒輪用鍵:園頭普通鍵:b×h=12×8,長l=20mm
4) 低速軸:
低速軸簡圖如下: 初定最小直徑:
dmin = = 34.5mm
∵最小軸徑處有鍵槽
∴dmin』=1.07dmin=36.915mm
取d1=45mm,d2=55mm,d3=60mm,d4=d2=55mm
d5=50mm,d6=45mm,d7=40mm;
l1=45mm,l2=44mm,l3=6mm,l4=60mm,l5=38mm,l6=40mm,l7=60mm
齒輪用鍵:園頭普通鍵:b×h=16×6,長l=36mm
選用30309軸承:d×D×T = 40×90×25.25mm;B=23mm;C=20mm
㈢ 從網上下了一個管理系統課程設計 登陸密碼怎麼能知道阿資料庫和SQL2005
額,你這個問題比較麻煩!
一般用戶名和密碼都是admin
如果資料庫里的都不對
那就只要暴力破解了
㈣ 大一課程設計,電話蒲(hash表)
*nix系系統:
ES(Unix)
例子: IvS7aeT4NzQPM
說明:Linux或者其他linux內核系統中
長度: 13 個字元
描述:第1、2位為salt,例子中的'Iv'位salt,後面的為hash值
系統:MD5(Unix)
例子:$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
說明:Linux或者其他linux內核系統中
長度:34個字元
描述:開始的$1$位為加密標志,後面8位12345678為加密使用的salt,後面的為hash
加密演算法:2000次循環調用MD5加密
系統:SHA-512(Unix)
例子:$6$12345678$U6Yv5E1lWn6mEESzKen42o6rbEm
說明:Linux或者其他linux內核系統中
長度: 13 個字元
描述:開始的$6$位為加密標志,後面8位為salt,後面的為hash
加密演算法:5000次的SHA-512加密
系統:SHA-256(Unix)
例子:$5$12345678$jBWLgeYZbSvREnuBr5s3gp13vqi
說明:Linux或者其他linux內核系統中
長度: 55 個字元
描述:開始的$5$位為加密標志,後面8位為salt,後面的為hash
加密演算法:5000次的SHA-256加密
系統:MD5(APR)
例子:$apr1$12345678$auQSX8Mvzt.tdBi4y6Xgj.
說明:Linux或者其他linux內核系統中
長度:37個字元
描述:開始的$apr1$位為加密標志,後面8位為salt,後面的為hash
加密演算法:2000次循環調用MD5加密
windows系統:
windows
例子:Admin:
長度:98個字元
加密演算法:MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
mysql
系統:mysql
例子:606717496665bcba
說明:老版本的MySql中
長度:8位元組(16個字元)
說明:包括兩個位元組,且每個字的值不超過0x7fffffff
系統:MySQL5
例子:*
說明:較新版本的MySQL
長度:20位元組(40位)
加密演算法:SHA-1(SHA-1($pass))
其他系統:
系統:MD5(WordPress)
例子:$P$
說明:WordPress使用的md5
長度:34個字元
描述:$P$表示加密類型,然後跟著一位字元,經常是字元『B』,後面是8位salt,後面是就是hash
加密演算法:8192次md5循環加密
系統:MD5(phpBB3)
說明:phpBB 3.x.x.使用
例子:$H$9123456785DAERgALpsri.D9z3ht120
長度:34個字元
描述:開始的$H$為加密標志,後面跟著一個字元,一般的都是字元『9』,然後是8位salt,然後是hash 值
加密演算法:2048次循環調用MD5加密
系統:RAdmin v2.x
說明:Remote Administrator v2.x版本中
例子:
長度:16位元組(32個字元)
加密演算法:字元用0填充到100位元組後,將填充過後的字元經過md5加密得到(32位值)
md5加密
標准MD5
例子:
使用范圍:phpBB v2.x, Joomla 的 1.0.13版本前,及其他cmd
長度:16個字元
其他的加salt及變形類似:
md5($salt.$pass)
例子::12
md5(md5($pass))
例子:
md5(md5($pass).$salt)
例子::wQ6
md5(md5($salt).md5($pass))
例子: :wH6_S
md5(md5($salt).$pass)
例子: :1234
㈤ 急求資料庫課程設計,人力資源管理系統(人事管理)
基於asp語言的測試項目
學生信息管理系統的設計與實現
基於ASP.NET的社區人口管理系統
基於ASP.NET的課程教學網站設計
公司會議網站
C#高校工資管理系統
C#在線點歌系統
《資料庫原理》精品課程網站設計
教師住房管理系統
《計算機網路》學習網站的設計與實現
《模式識別》精品課程網站的設計與實現
asp個人博客
asp網上書店
微型計算機學習網站的設計與實現
成績分析系統的設計與實現
寵物管理系統
基於3G通信的視頻醫葯系統設計
基於web的圖書館圖書信息查詢系統
離散數學網上教學系統
企業進銷存管理系統分析與設計
人力資源管理信息系統
學生作業管理系統
社區論壇
在線課題系統
《資料庫技術及應用》精品課程建設網站
職業中介信息管理系統
自來水收費管理系統
會員制漫畫店(連鎖)管理系統
基於CSCW的大學生就業平台
基於WEB方式的視頻監控系統設計與開發
旅遊網站
健康網站的設計與實現
新聞管理系統設計與實現
工會信息發布系統的設計與開發
模式識別與智能研究所網站
互聯網計費系統
C#畢業生信息管理就業招聘系統
體育用品在線商店系統
網站群信息管理系統
員工績效考核系統
學生檔案信息管理C#
基於ASP.NET技術的動態IT培訓網站的設計與實現
《軟體測試技術》精品課程網站的建設與開發
網上二手房交易系統設計與實現
ASP131企業進銷存管理系統
ASP C語言教學系統+論文
ASP(交友錄)
asp+SQLServer網上書店系統+論文
ASP+sql精品在線試題庫設計+論文
ASP+SQL圖書管理系統+論文
<dir> asp+sql玉林旅遊管理系統+論文+答辯PPT+開題報告+屏幕錄相
ASPAC軟體信息發布系統
ASPAC學生論壇
asp辦公系統
ASP畢業設計選題管理系統(asp+sql)
asp畢業生信息管理系統源碼+論文+開題+文獻+外文翻譯
ASP產品銷售
ASP窗簾網站平台
200ASP電子商務系統
ASP電子政務檔案管理系統+論文
ASP服裝銷售系統論文+答辯PPT+源代碼+翻譯+開題報告+任務書+實習報告)
20ASP關於奧運網站專題
ASP基於WEB的辦公自動化管理系統+可執行源代碼+論文
ASP家教信息管理系統
asp教師檔案管理系統+論文
asp教師信息管理系統
ASP教學互動系統
asp酒店房間預約系統設計
ASP客戶關系管理系統ASP+SQL+可執行文件+論文
asp旅遊信息管理系統
ASP企業進銷存管理系統ASP+SQL+可執行文件+論文
ASP企業物流管理
ASP企業物流平台的設計與實現 論文+源程序可執行+ASP+ACCESS資料庫
ASP求職招聘網站設計(ASP)
ASP人才招聘系統
asp人力資源管理系統ASP+SQL+論文+源程序可執行
asp上網導航(論文+源碼)
ASP售後服務管理系統
ASP同學錄
ASP同學錄asp+sql
ASP投票系統
asp圖書出售圖書發行系統
ASP圖書管理系統
asp圖書管理系統+論文+開題+PPT
asp圖書管理系統+論文+開題+PPT.rar
ASP網路辦公系統
ASP網路辦公系統(源碼加論文)
ASP網路購物系統
ASP網路硬碟文件資源管理系統(論文+代碼+譯
ASP網上購書
ASP網上購物系統
ASP網上考試系統
asp網上聊天室系統設計與開發帶論文
ASP網上人才管理系統+可執行源代碼+論文
ASP網上售房管理系統
ASP網上書店的
ASP網上貼吧系統
asp網上選課系統+論文
ASP物流系統設計
ASP物資管理系統的設計與實現+可執行源代碼+資料庫+論文
ASP校友錄
ASP新聞管理系統
ASP新聞網程序+論文
asp信息查詢系統
ASP學生管理
ASP學生信息管理系統
ASP葯店信息管理系統
asp醫葯連鎖店管理系統ASP+源代碼+可執行程序+論文
ASP影片租賃系統
asp員工信息管理系統
ASP原創交友網設計
Asp原創網上書店
ASP原創信息管理系統
ASP在線exam
ASP在線花店系統
ASP在線教育系統
asp在線考試系統+論文
asp在線學習系統
asp自動化測試工具論文.net
ASP作業提交與批改系統(畢業論文+配套中英文對照翻譯+源代碼+執行結果)
原創教師信息管理系統
asp.net及.net
基於.net技術的校園新聞發布系統全套
asp.net ERP系統(畢業設計+論文
asp.net+sql人才網站
Asp.net2.0,C#)在線考勤系統研發+論文
ASP.NET報名管理信息系統
ASP.NET電子購物商城系統+論文
asp.net電子書城系統+論文
asp.net很好的美容院管理系統加論文
ASP.NET通用作業批改系統設計+論文
ASP.NET圖書館管理信息系統
ASP.NET網路考試系統.net
ASP.NET網上書店(源程序+論文+答辯PPT)
ASP.net校友錄畢業設計+論文
asp.net學生成績管理系統+論文
asp.net學生管理系統
asp.net在線考試統加論文
ASP.NET智能評教系統,內含論文智能教評
asp.net中圖像的檢索技術畢業設計(論文,源碼,任務書,開題報告,答辯ppt)
net郵件收發系統的設計+論文
VB.net+SQL房地產評估系統
vb.net酒店管理系統+論文
VB.NET網吧計費系統軟體
人事管理系統+論文+答辨PPT
復件(2)delphi列車時刻查詢決策系統課程設計論文+源代碼
復件delphi列車時刻查詢決策系統課程設計論文+源代碼
三層圖書管理系統
商品銷售管理系統(畢業設計)最新版下載
題庫系統與試卷生成
java論壇管理系統,包括論文和程序
java圖書管理系統畢業設計+源碼
Java游戲設計打飛機程序+論文
java作業管理系統
java五子棋的開發
JAVA論壇管理資料庫開發
JSP+SQL計算機等級考試查詢系統
jsp倉儲管理系統+論文
jsp操作系統課程教學網站的設計與實現論文+源代碼
jsp高校學生考勤管理系統
jsp高校智能排課系統+論文
JSP教學管理系統
JSP考試管理系統
jsp網上購書系統源代碼
jsp網上書店程序+論文
jsp網上書店系統
jsp物流中心倉儲信息管理系統
jsp學生課績管理系統+論文
JSP作業管理
教學管理系統
PHP+SQL公共課平時成績查詢系統
PHP教材管理系統+論文
PHP課程設計+論文
SQL資料庫課程設計 學生選課
168VBAC房屋銷售管理信息系統
dekphi貿易公司信息管理系統+論文
VB ATM自動銀行+論文
VB+ACCESS高校題庫管理系統附原代碼+程序+1萬字論文
VB+Access酒店客房管理系統(源碼+論文).rar(3475
VB065IC卡管理系統001
VB班級管理系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
VB本科畢業論文-工資管理系統畢業論文+源碼
vb倉庫管理系統(包括可執行程序 源碼 開題報告 答辯稿)
VB超市管理 系統+論文
vb超市管理系統+論文
vb超市進銷存管理系統vb+access源代碼+可執行文件+論文+開題報稿+外文翻譯+答辯ppt.rar(768
vb車輛管理系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
vb地籍登記管理系統vb+access源代碼+論文+開題報告+外文翻譯+答辯ppt
vb電表管理系統vb+access源代碼+可執行程序+論文
VB俄羅斯方塊系統+論文
VB俄羅斯方塊游戲課程設計
vb高速公路票據管理系統vb+access源代碼+可執行文件+論文+開題報告+外文翻譯+答辯ppt
VB工資管理系統
VB工資管理系統(論文+開題報告+源代碼)
VB工資管理系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
vb公交車查詢系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
VB計算機自動出卷系統vb版(含開題報告+外文翻譯+源程序+可執行程序+論文正文+答辯ppt)
VB教師管理系統vb+access含源代碼+可執行程序+論文+開題報告+外文翻譯+答辯稿
vb教師管理系統vb+access含源代碼+可執行程序+論文+開題報告+外文翻譯+答辯稿(2)
VB教務管理系統vb+access源代碼+論文+開題報告+外文翻譯+答辯ppt
vb教學輔助系統VB+access源代碼+可執行文件+論文
VB客房管理系統全套(帶源碼)
vb課程設計醫葯管理系統(VB+SQL)應要求源文件+代碼+論文打包上傳
vb庫存管理系統(論文+開題報告+源代碼)
VB庫存管理系統2(論文+開題報告+源代碼)
VB評語管理系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
vb企業人事工資管理系統+論文
vb企業人事管理系統
vb企業人事管理信息系統+論文
VB人才管理系統
vb人事工資管理系統畢業設計(論文)
VB人事管理系統
vb人事管理系統(VB畢設成品)畢業論文
VB人事管理系統sql+論文
vb人事管理源程序+論文
vb人事資源管理系統+論文
vb設備管理系統+論文
vb試題庫自動組卷系統
vb題庫管理系統+論文
vb通訊錄管理信息系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯
vb圖書館管理系統+論文
vb圖書管理系統
vb圖書管理系統(文檔+源代碼)
vb圖書管理系統vb+access版論文+源代碼+開題報告+外文翻譯+答辯ppt
vb圖書管理系統源代碼論文
vb圖書銷售信息系統+論文
VB文檔管理系統+論文
vb小區物業管理系統
vb校園網交換機節點管理系統+論文
vb學籍管理系統帶論文
VB學生檔案
vb學生檔案管理系統
vb學生檔案管理系統+論文
VB學生公寓管理系統
vb學生評語生成系統論文
VB學生信息管理系統
vb學生信息管理系統(VB+sql)+畢業論文2萬字
vb學生信息管理系統(代碼+論文+開題報告)
vb葯品庫房管理系統vb+access源代碼+可執行程序+論文+開題報告+外文翻譯+答辯ppt
vb一個考試管理系統。帶論文的
VB醫葯管理系統
vb音像製品出租及銷售管理系統
VB員工管理系統
VB原創庫存管理系統開題報告+外文翻譯+論文正文+源代碼+可執行程序
vb原創圖書管理系統)畢業設計+論文
vb源代碼加可執行文件加論文
vb智能排課系統+論文
vb中介管理系統vb+access源代碼+論文+開題報告+外文翻譯+答辯ppt
學生宿舍管理系統
VC++
C++ 003指紋識別系統
C++課程設計報告(人事管理系統)
VC++ 003指紋識別系統
VC++06全國天氣信息管理系統
vc++24點游戲的開發和實現
VC++車輛調度
vc++航空檢票系統+論文
vc++航空客運訂票系統+論文
VC++基於校園網的學院教學質量監測評估系統
vc++簡單幾何圖形的識別和編輯系統+論文
VC++經濟管理出版社期刊書目信息管理系統
vc++區域網的數據包監聽及數據分析畢業論文+源代碼
VC++開發GIS項目程序+論文
vc++可視化圖像處理系統+論文
vc++庫存管理
vc++圖書館管理系統
vc++網上尋呼QICQ源代碼(附帶論文)
vc++象棋程序+論文
VC++學生成績統計分析系統
vc++醫葯管理系統+論文
vc++用遺傳演算法解決車輛優化調度問題論文+源代碼+任務書
vc++運動會成績管理系統(源碼+論文)
VC+ACCESS開發的酒店管理+論文
vc數據挖掘在客戶關系管理中的
vc中國象棋軟體(程序+源碼+論文)下載
VC做的聊天室+論文
瀏覽器(論文+源碼)
一個VC++做的手機話費參考程序,有設計報告
vfp現代物流企業管理系統+論文
vfp現代物流企業管理系統+論文
VF財務管理系統(論文+開題報告+源代碼+答辯PPT)
vf倉庫管理系統(論文+源文件)
VF地稅局工資管理系統(論文+開題報告+答辯PPT+源代碼+程序清單)
vf簡單的酒店管理源碼+文論
VF教職工信息管理畢業設計
vf教職工信息管理畢業設計+論文
vf路政管理系統(論文+開題報告+答辯PPT+源代碼+程序清單)
VF企業人事檔案管理系統全套(帶源碼)
vf圖書管理系統(VFP)(包括程序文檔)
VF系統的學生成績管理系統+論文
vf職員信息系統+論文
vf做的學生管理系統+論文
ASP+ACCESS深水藍文學網站
ASP+ACCESS文學網站
ASP+SQL美食網站
ASP人才招聘系統
delphi書店輔助進書系統
JSP028學生學籍管理系統
JSP科研處管理信息系統+論文
JSP學生學籍管理系統
JSP在線學習系統
my美食網站
php+mysql學生成績查詢
PHP學生成績查詢
vb數控加工技術教學素材資源庫的構建
VB文檔管理系統+論文
百瑞通公司網站
報名系統
多媒體課程答疑係統
高校固定資產管理系統
公司辦公信息管理系統
恆華貿易有限公司網站
基於區域網的聊天室系統
科研項目網上申報管理系統
兩個網站
企業電子投票系統
人才網內容管理系統
商品配送中心庫存模擬軟體設計
社區網路(含在線影院)
施甸縣旅遊咨詢網
同校二手電筒子產品交易網
外觀專利圖像檢索平台
網路實驗教學網站
網上教學資源共享系統
小區門戶網站
學科建設
學科建設系統
醫療器械公司網站客戶服務系統設計
政府采購管理信息系統
中國節能環保科技網站
計算機論文
ASP動態網站建設論文.doc
java網路5子棋代碼.doc
工商管理畢業論文
基於Web的網上評教系統.doc
計算機區域網組建與互連畢業設計論文 .doc
嵌入式系統開發要素的選擇分析.doc
嵌入式系統在多點溫度控制中的應用.doc
校園網路工程綜合布線方案
人事管理系統
現代物流企業管理系統
企業數據信息管理系統
航空公司管理系統
成本費用計算系統
VCD租借管理系統
畢業生招聘信息的發布與管理系統
賓館客房管理系統
《計算機專業英語》網上教學系統設計與實現
《軟體工程》精品課程教學網站的設計與實現 ASP+SQL Sever2000
《資料庫原理及應用技術》課程指導平台的開發
《新聞發布系統》
《資訊理論與編碼》在線考試系統
3G的AKA協議中F1至F5的UE端的實現
3G的AKA協議中F1至F5的服務網路端實現
ASP.NET技術在網站開發設計中的研究與開發 ASP.NET+SQL Sever2000
BBS系統開發與帳戶安全保護的實現
BS結構的城市酒店入住信息管理系統的設計
BS結構下的OA流程可視化的研究與實現
BS結構下的郵件系統設計開發
BS模式的計算機等級考試管理系統的設計與實現 ASP.NET+SQL Sever2000
C語言教學網站及網上考試系統的設計與實現 ASP.NET+SQL Sever2000
C語言試題生成與考試系統
Delaunay演算法的實現與應用
Excel條件格式化工具的設計與實現
FTP客戶端的設計與實現
FTP客戶端設計與開發
多種排序演算法動態演示軟體的設計和開發
基於JSP學生成績管理系統軟體的開發
清除履歷表、日誌表、月購買額
多語種視頻音頻播放器的設計與實現
創建會員信息文件
Win32平台下的PE文件病毒的研究及實現
一種多商家網路商店的設計與實現
許可權管理模塊
積分添加和通票回收
網上選課系統的設計與實現
泡泡堂網路游戲的設計與實現
許可權及公共模塊設計與開發
某企業信息管理系統的設計與實現
H2003032045程富超_一種遠程管理Linux系統工具的設計與實現
多語種網路硬碟系統的設計
系統框架設計與開發
小型證券術語解釋及翻譯系統的設計與開發
許可權管理與日誌記錄模塊的設計與開發
考試管理及成績查詢模塊的設計與開發
OA子系統的設計與開發
題庫及試卷管理模塊的設計與開發
考試監控及閱卷模塊的設計與開發
某店積分更新記錄管理
教務平台—學籍管理模塊開發與設計
H2003032197王蕾-基於Java的兩個通用安全模塊的設計與實現
銷售情況,會員卡再發行數據生成
教務信息管理系統的設計與實現
高校學生宿舍管理系統的設計與實現
網路商店銷售管理系統的設計與實現
商品分類,交易狀況統計
IA32邏輯功能模擬實現
Iptables圖形管理工具的設計與實現
Ipv6環境下FTP系統的設計與實現 Java+SQL Server2000
IT產品網上物流管理信息系統的設計與實現
J2ME手機游戲的開發-Beckham Goal
Java打飛機游戲設計
Java多線程與線程安全實踐-基於Http協議的斷點續傳
JAVA網路通信系統的研究與開發 JAVA+SQL Sever2000
JSP實現的簡單旅遊管理系統的設計
KASUMI演算法的研究與VC實現
體育城場地預約系統的設計與實現
Linux環境下的密文聊天系統的設計與實現
Linux平台下的聊天軟體的設計與開發
Linux下的簡單網路管理控制系統的設計與開發
Linux下的網路層加密解密的實現
MBA顧問網的研究與開發 ASP+SQL Sever2000
MD5演算法的研究與實現-數據存儲加密
RSA公鑰密碼演算法的一種快速實現
RSA可視化演算法程序的實現與研究
RSA密碼體制的實現.
Scheme解釋程序的實現.tgz
VBA在培訓考試中的應用研究與實現 VBA+Access 2003
vCalendar的跨平台系統的設計
VFP試題庫管理系統的設計與實現 ASP.NET+SQL Sever2000
Web Mail收發系統設計與開發
Web的入侵防禦系統的設計與實現
Web音樂搜索軟體的設計與實現
Windows簡單防火牆設計與實現
Windows進程管理工具設計與實現
Windows系統輔助管理程序設計與開發
Windows下盜取帳號密碼的木馬程序的設計
WML信息查詢與後端信息發布系統實現——WML信息查詢設計
Word試題庫工具插件的設計
WORD文檔分類管理插件的設計與實現
XX職業中學圖書管理系統的設計
班級學生管理系統的設計與開發
辦公自動化管理系統的設計與實現
辦公自動化系統的設計與實現 ASP.NET2.0+SQL Sever2000
本地監聽與遠程埠掃描
畢業論文管理系統的設計
畢業設計(論文)資源網站的開發 ASP.NET+SQL Sever2000
畢業設計論文列印系統 ASP.NET+SQL Sever2000
前台WEB端的研究與開發 ASP.NET+SQL Sever2000
畢業設計文檔相似度判別演算法的研究與實現 ASP.NET+SQL Sever2000
畢業設計選題系統的設計與實現 ASP.NET+SQL Sever2000
並行介面器件功能演示的可視化設計 學位論文
博客網站的設計與實現 ASP.NET+SQL Sever2000
博客網站的研究與實現 JSP+SQL Server 2000
猜數游戲的設計與開發
倉庫貨物管理系統的設計與實現
長途汽車信息管理系統的設計與實現
超市收費系統的設計與實現
大隨機數生成器演算法的研究與實現
大型中斷介面器件的功能演示的可視化設計
大學生德育工程思想道德評價系統的開發與實現 ASP+SQL Sever2000
大學英語疑難解答系統的設計與實現 ASP+SQL Sever2000
代理伺服器測試程序的設計與實現
檔案管理系統的設計與實現
迪迪毛絨玩具廠網站設計與實現 ASP.NET+ Oracle 9i
第二代木馬的研究與實現.
基於.NET的城市公交查詢系統的設計與實現
基於.NET的電子商務網站的設計 ASP.NET+SQL Server 2000
基於.NET的房屋銷售信息管理系統的設計與實現
基於.NET的工資績效管理系統的開發
基於.NET的公務員考試模擬系統的設計
基於.NET的火車聯網售票系統的設計
基於.NET的駕校理論考試模擬系統
基於.NET的酒店預訂信息管理系統的設計
基於.NET的門診葯品查詢系統的設計與實現
基於.net的內部郵件系統實現
基於.NET的企業內部辦公系統的設計與實現 ASP.NET+SQL Sever2000
基於.NET的視頻點播系統的設計與實現 ASP.NET+SQL Sever2000
基於.NET的數據共享網站的設計
基於.NET的網上購物系統的設計與實現
基於.NET的網上售書系統的設計與實現
基於.NET的網上圖書銷售系統的設計與實現
基於.net企業訂單管理系統的開發
基於Ajax+Lucene構建搜索引擎的設計和實現
基於Apriori演算法的關聯規則挖掘系統的設計與實現
基於ASP.NET的班級風采網站的設計
基於ASP.NET的公司網站的設計與實現
基於ASP.NET的企業網站的研究與開發 ASP.NET+SQL Sever2000
基於ASP.NET的網上書店的設計與實現 ASP.NET+SQL Sever2000
基於ASP.NET的校友錄管理系統的研究與實現 ASP.NET+SQL Sever2000
基於ASP.NET的學生成績報表系統的設計與實現 ASP.NET+SQL Sever2000
基於ASP.NET的學生成績管理系統的設計與實現 ASP.NET+SQL Sever2000
基於ASP.NET的學生成績合成系統的設計與實現 ASP.NET+SQL Sever2000
基於ASP.NET簡易博客網站的設計與實現
基於ASP.NET教學輔助系統設計與實現
基於ASP的筆記本銷售網站的設計與實現
基於ASP的博客網站設計與實現 ASP+Access
基於ASP的反垃圾郵件管理系統的設計
基於ASP的房屋租售信息管理系統的設計
基於ASP的公交查詢系統的設計與實現
基於ASP的淮工學生購物網的設計與實現 ASP+SQL Sever2000
基於ASP的旅遊網站的設計與實現
基於ASP的某學校校園BBS的設計與實現
基於ASP的企業人事管理系統的設計與實現
基於asp的搜索引擎開發
基於ASP的網路聊天室的設計和實現
基於ASP的學生信息管理系統的設計與實現
基於ASP技術的電子產品銷售網站的設計與實現
基於ASP網站的安全性研究與實現
基於BS的工藝品展示系統的設計與實現
基於BS的計算機等級考試系統的設計與實現
基於BS的家教交流平台的實現
基於BS的人才交流網站的設計與實現
基於BS的圖書銷售管理系統的設計與實現
基於BS方式的即時通訊軟體的設計與實現
基於BS結構的倉儲物流管理系統
基於BS結構的二手交易系統的設計與實現
基於BS結構的房屋租售管理系統的實現
基於BS結構的工廠設備管理系統的設計與開發
基於BS結構的工藝品銷售系統的實現
基於BS結構的旅遊網站的開發與設計
基於BS結構的實驗室預約模型系統
基於BS結構的學生交流論壇的設計與開發
基於BS結構的學生在線選課系統的實現
基於BS結構的在線學籍管理系統
基於BS模式的網上銷售系統的研究與實現 ASP+Access
基於BS模式的中小企業人事管理系統的設計與實現
基於C#的文檔加密器的實現
基於C#埠掃描器的實現
基於cs的電子郵件簡單收發系統設計與實現
基於cs的家庭財務管理系統的設計與實現
基於CS結構的個人理財系統的開發
基於CS結構的企業人事管理系統的設計與實現
基於CS結構的醫院管理系統的設計與實現
基於Delphi 的物資管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的超市銷售系統的研究與實現 Delphi +SQL server 2000
基於Delphi的公司人事管理系統的設計與實現
基於Delphi的進貨渠道管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的酒店管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的排課系統的設計與實現 Delphi +SQL server 2000
基於Delphi的企業人事工資管理系統 Delphi +SQL server 2000
基於Delphi的企業銷售管理系統 ASP.NET+SQL Sever2000
基於DELPHI的企業員工培訓管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的圖書管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的小型超市進存銷管理系統
基於delphi的學生成績管理系統的設計與實現 Delphi +SQL server 2000
基於Delphi的醫葯管理系統的設計和實現 Delphi7.0+SQL Sever2000
基於JAVA CS遠程監控系統軟體的實現
基於Java ME無線網路移動端的俄羅斯方塊游戲的實現(最終修改版)
基於Java的五子棋游戲的設計
基於Java的在線購物系統的設計與實現
基於Java五人制足球游戲的研究與開發
基於JSP的畢業設計選題系統的設計與實現
基於JSP的房產中介系統的設計與實現
基於JSP的計算機網路在線測試系統的設計與實現 JSP+SQL Server
基於JSP的網上購物系統的設計與實現
基於JSP技術的獵頭公司管理軟體的設計和實現——內部事務部分
基於Web的文檔管理系統的設計與實現
基於WEB的小型公司人事管理系統的設計
基於Web的新聞發布系統(答辯未通過)
基於WEB的學生電子作業提交系統 PHP+SQL Sever2000
基於web的學位論文管理系統的設計與實現 ASP.NET+SQL Sever2000
基於WEB的煙草銷售系統的設計與實現 JSP+SQL Server 2000
基於web的遠程教育系統的研究與開發 ASP.NET+SQL Sever2000
基於Web的在線考試系統的設計與實現 ASP+SQL Sever2000
基於Web的招投標系統的設計與實現
基於WEB技術的同學錄系統的設計與實現 ASP.NET+SQL Sever2000
基於Web模式的物流管理信息系統的設計與實現 ASP+SQL Sever2000
基於Web學生成績處理系統的設計與實現 ASP+SQL Sever2000
網上辦公系統——公文流程管理設計與實現
網上報名及在線考試系統的設計與實現
網上超市系統管理軟體的設計與實現 ASP.NET+Access
網上訂餐系統的設計與實現
網上二手商品交易管理系統的設計與實現
網上輔助答疑係統的設計與實現 ASP.NET+SQL Sever2000
網上購物系統的設計與實現
網上購物系統的設計與實現 PHP5.0+APACHE+MYSQL
網上家電銷售管理系統的設計與實現
網上教材管理系統的設計與實現
網上教師測評系統 JSP+SQL Server
網上軍事論壇的設計與實現
網上考試及評析系統的設計與實現
網上考試系統的設計與實現 ASP.NET+SQL Sever2000
網上課件管理系統的設計與實現
網上拍賣系統的設計與實現
網上求職與招聘系統的設計與實現
網上人才招聘系統
網上商店系統的設計與實現 ASP+Access
網上商品銷售系統的設計與實現
網上書店的設計與實現
網上書店——管理模塊的設計與實現
網上書店——在線購物及統計分析的設計與實現
網上圖書訂閱系統的設計
網上圖書預約系統的設計
網上鮮花銷售系統的設計
網上招聘系統 ASP.NET+SQL Sever2000
銷售供應鏈管理系統的設計與開發
銷售管理系統 ASP2.0+SQL2000
小區物業管理系統 Delphi +SQL server 2000
小區物業管理系統的設計與實現 ASP.NET+SQL Sever2000
小區物業管理系統的設計與實現 JSP+SQL Server 2000
小型電腦行業銷售管理的設計與實現 ASP+SQL Sever2000
小型酒店管理系統的設計
㈥ MFC界面上實現MD5演算法
界面是界面,演算法是演算法。各司其職。
㈦ A*演算法應用,大家給點介紹,做課程設計
維基網路有很多的,大陸訪問不了,可以設置個香港代理。
SHA 家族
[編輯首段]維基網路,自由的網路全書
跳轉到: 導航, 搜尋
安全散列演演演算法能計算出一個數位訊息所對應到的,長度固定的字串(又稱訊息摘要)。且若輸入的訊息不同,它們對應到不同字串的機率很高;而 SHA 是FIPS所認證的五種安全雜湊演演演算法。這些演演演算法之所以稱作「安全」是基於以下兩點(根據官方標準的描述):「1)由訊息摘要反推原輸入訊息,從計算理論上來說是很困難的。2)想要找到兩組不同的訊息對應到相同的訊息摘要,從計算理論上來說也是很困難的。任何對輸入訊息的變動,都有很高的機率導致其產生的訊息摘要迥異。」
SHA 家族的五個演演演算法,分別是SHA-1, SHA-224, SHA-256, SHA-384, 和 SHA-512,由美國國家安全局 (NSA) 所設計,並由美國國家標准與技術研究院(NIST) 發布;是美國的政府標准。後四者有時並稱為SHA-2。SHA-1 在許多安全協定中廣為使用,包括 TLS 和 SSL、 PGP、SSH、S/MIME 和 IPsec,曾被視為是 MD5(更早之前被廣為使用的雜湊函數)的後繼者。但 SHA-1 的安全性如今被密碼學家嚴重質疑;雖然至今尚未出現對 SHA-2 有效的攻擊,它的演演演算法跟 SHA-1 基本上仍然相似;因此有些人開始發展其他替代的雜湊演演演算法。緣於最近對 SHA-1 的種種攻擊發表,「美國國家標准與技術研究院(NIST)開始設法經由公開競爭管道(類似高級加密標准AES的發展經過),發展一個或多個新的雜湊演演演算法。」
目錄 [隱藏]
1 SHA-0 和 SHA-1
1.1 SHA-0 的破解
1.2 SHA-1 的破解
2 SHA-2
3 SHA 所定義的長度
4 SHAd
5 應用
6 SHA-1 演演演算法
7 SHA-2 演演演算法
8 參見
9 參考資料
10 外部鏈結
[編輯] SHA-0 和 SHA-1
SHA-1 壓縮演演演算法中的一個迴圈。A, B, C, D 和 E 是這個state中的 32 位元文字;F 是會變化的非線性函數;<<<n 代表bit向左循環移動n個位置。n因操作而異。田代表molo 232之下的加法,Kt 是一個常數。最初載明的演演演算法於 1993年發布,稱做安全雜湊標准 (Secure Hash Standard),FIPS PUB 180。這個版本現在常被稱為 SHA-0。它在發布之後很快就被 NSA 撤回,並且由 1995年發布的修訂版本 FIPS PUB 180-1 (通常稱為 SHA-1) 取代。SHA-1 和 SHA-0 的演演演算法只在壓縮函數的訊息轉換部份差了一個位元的循環位移。根據 NSA 的說法,它修正了一個在原始演演演算法中會降低密碼安全性的錯誤。然而 NSA 並沒有提供任何進一步的解釋或證明該錯誤已被修正。而後 SHA-0 和 SHA-1 的弱點相繼被攻破,SHA-1 似乎是顯得比 SHA-0 有抵抗性,這多少證實了 NSA 當初修正演演演算法以增進安全性的聲明。
SHA-0 和 SHA-1 可將一個最大 264 位元的訊息,轉換成一串 160 位元的訊息摘要;其設計原理相似於 MIT 教授 Ronald L. Rivest 所設計的密碼學雜湊演演演算法 MD4 和 MD5。
[編輯] SHA-0 的破解
在 CRYPTO 98 上,兩位法國研究者提出一種對 SHA-0 的攻擊方式 (Chabaud and Joux, 1998): 在 261的計算復雜度之內,就可以發現一次碰撞(即兩個不同的訊息對應到相同的訊息摘要);這個數字小於 280 ,也就是說,其安全性不到一個理想的雜湊函數抵抗攻擊所應具備的計算復雜度。
2004年時,Biham 和 Chen 也發現了 SHA-0 的近似碰撞 — 兩個訊息可以雜湊出幾乎相同的數值;其中 162 位元中有 142 位元相同。他們也發現了 SHA-0 的完整碰撞(相對於近似碰撞),將本來需要 80 次方的復雜度降低到 62 次方。
2004年8月12日,Joux, Carribault, Lemuet 和 Jalby 宣布找到 SHA-0 演演演算法的完整碰撞的方法,這是歸納 Chabaud 和 Joux 的攻擊所完成的結果。發現一個完整碰撞只需要 251的計算復雜度。他們使用的是一台有 256 顆 Itanium2 處理器的超級電腦,約耗 80,000 CPU 工時 [1]。
2004年8月17日,在 CRYPTO 2004 的 Rump 會議上,王小雲, 馮登國 (Feng), 來學嘉 (Lai), 和於紅波 (Yu) 宣布了攻擊 MD5、SHA-0 和其他雜湊函數的初步結果。他們攻擊 SHA-0 的計算復雜度是 240,這意謂的他們的攻擊成果比 Joux 還有其他人所做的更好。請參見 MD5 安全性。2005 年二月,王小雲和殷益群、於紅波再度發表了對 SHA-0 破密的演演演算法,可在 239 的計算復雜度內就找到碰撞。
[編輯] SHA-1 的破解
鑒於 SHA-0 的破密成果,專家們建議那些計畫利用 SHA-1 實作密碼系統的人們也應重新考慮。2004 年 CRYPTO 會議結果公布之後,NIST 即宣布他們將逐漸減少使用 SHA-1,改以 SHA-2 取而代之。
2005年,Rijmen 和 Oswald 發表了對 SHA-1 較弱版本(53次的加密迴圈而非80次)的攻擊:在 280 的計算復雜度之內找到碰撞。
2005年二月,王小雲、殷益群及於紅波發表了對完整版 SHA-1 的攻擊,只需少於 269 的計算復雜度,就能找到一組碰撞。(利用暴力搜尋法找到碰撞需要 280 的計算復雜度。)
這篇論文的作者們寫道;「我們的破密分析是以對付 SHA-0 的差分攻擊、近似碰撞、多區塊碰撞技術、以及從 MD5 演演演算法中尋找碰撞的訊息更改技術為基礎。沒有這些強力的分析工具,SHA-1 就無法破解。」此外,作者還展示了一次對 58 次加密迴圈 SHA-1 的破密,在 233 個單位操作內就找到一組碰撞。完整攻擊方法的論文發表在 2005 年八月的 CRYPTO 會議中。
殷益群在一次面談中如此陳述:「大致上來說,我們找到了兩個弱點:其一是前置處理不夠復雜;其二是前 20 個迴圈中的某些數學運算會造成不可預期的安全性問題。」
2005 年八月 17 的 CRYPTO 會議尾聲中王小雲、姚期智、姚儲楓再度發表更有效率的 SHA-1 攻擊法,能在 263 個計算復雜度內找到碰撞。
在密碼學的學術理論中,任何攻擊方式,其計算復雜度若少於暴力搜尋法所需要的計算復雜度,就能被視為針對該密碼系統的一種破密法;這並不表示該破密法已經可以進入實際應用的階段。
就應用層面的考量而言,一種新的破密法出現,暗示著將來可能會出現更有效率、足以實用的改良版本。雖然這些實用的破密法版本根本還沒誕生,但確有必要發展更強的雜湊演演演算法來取代舊的演演演算法。在「碰撞」攻擊法之外,另有一種反譯攻擊法,就是由雜湊出的字串反推原本的訊息;反譯攻擊的嚴重性更在碰撞攻擊之上。 在許多會應用到密碼雜湊的情境(如用戶密碼的存放、文件的數位簽章等)中,碰撞攻擊的影響並不是很大。舉例來說,一個攻擊者可能不會只想要偽造一份一模一樣的文件,而會想改造原來的文件,再附上合法的簽章,來愚弄持有私密金鑰的驗證者。另一方面,如果可以從密文中反推未加密前的使用者密碼,攻擊者就能利用得到的密碼登入其他使用者的帳戶,而這種事在密碼系統中是不能被允許的。但若存在反譯攻擊,只要能得到指定使用者密碼雜湊過後的字串(通常存在影檔中,而且可能不會透露原密碼資訊),就有可能得到該使用者的密碼。
2006 年的 CRYPTO 會議上,Christian Rechberger 和 Christophe De Cannière 宣布他們能在容許攻擊者決定部分原訊息的條件之下,找到 SHA-1 的一個碰撞。
[編輯] SHA-2
SHA-2 的第t個加密迴圈。圖中的深藍色方塊是事先定義好的非線性函數。ABCDEFGH一開始分別是八個初始值,Kt是第t個金鑰,Wt是本區塊產生第t個word。原訊息被切成固定長度的區塊,對每一個區塊,產生n個word(n視演演演算法而定),透過重復運作迴圈n次對ABCDEFGH這八個工作區段循環加密。最後一次迴圈所產生的八段字串合起來即是此區塊對應到的雜湊字串。若原訊息包含數個區塊,則最後還要將這些區塊產生的雜湊字串加以混合才能產生最後的雜湊字串。NIST 發布了三個額外的 SHA 變體,這三個函數都將訊息對應到更長的訊息摘要。以它們的摘要長度 (以位元計算) 加在原名後面來命名:SHA-256,SHA-384 和 SHA-512。它們發布於 2001年的 FIPS PUB 180-2 草稿中,隨即通過審查和評論。包含 SHA-1 的 FIPS PUB 180-2,於 2002年以官方標准發布。2004年2月,發布了一次 FIPS PUB 180-2 的變更通知,加入了一個額外的變種 "SHA-224",這是為了符合雙金鑰 3DES 所需的金鑰長度而定義。
SHA-256 和 SHA-512 是很新的雜湊函數,前者以定義一個word為32位元,後者則定義一個word為64位元。它們分別使用了不同的偏移量,或用不同的常數,然而,實際上二者結構是相同的,只在迴圈執行的次數上有所差異。 SHA-224 以及 SHA-384 則是前述二種雜湊函數的截短版,利用不同的初始值做計算。
這些新的雜湊函數並沒有接受像 SHA-1 一樣的公眾密碼社群做詳細的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。Gilbert 和 Handschuh (2003) 曾對這些新變種作過一些研究,聲稱他們沒有弱點。
[編輯] SHA 所定義的長度
下表中的中繼雜湊值(internal state)表示對每個資料區塊壓縮雜湊過後的中繼值(internal hash sum)。詳情請參見Merkle-Damgård construction。
演演演算法 輸出雜湊值長度 (bits) 中繼雜湊值長度 (bits) 資料區塊長度 (bits) 最大輸入訊息長度 (bits) 一個Word長度 (bits) 迴圈次數 使用到的運運算元 碰撞攻擊
SHA-0 160 160 512 264 − 1 32 80 +,and,or,xor,rotl 是
SHA-1 160 160 512 264 − 1 32 80 +,and,or,xor,rotl 存在263 的攻擊
SHA-256/224 256/224 256 512 264 − 1 32 64 +,and,or,xor,shr,rotr 尚未出現
SHA-512/384 512/384 512 1024 2128 − 1 64 80 +,and,or,xor,shr,rotr 尚未出現
[編輯] SHAd
SHAd 函數是一個簡單的相同 SHA 函數的重述:
SHAd-256(m)=SHA-256(SHA-256(m))。它會克服有關延伸長度攻擊的問題。
[編輯] 應用
SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全雜湊演演演算法的美國聯邦政府所應用,他們也使用其他的密碼演演演算法和協定來保護敏感的未保密資料。FIPS PUB 180-1 也鼓勵私人或商業組織使用 SHA-1 加密。Fritz-chip 將很可能使用 SHA-1 雜湊函數來實現個人電腦上的數位版權管理。
首先推動安全雜湊演演演算法出版的是已合並的數位簽章標准。
SHA 雜湊函數已被做為 SHACAL 分組密碼演演演算法的基礎。
[編輯] SHA-1 演演演算法
以下是 SHA-1 演演演算法的虛擬碼:
Note: All variables are unsigned 32 bits and wrap molo 232 when calculating
Initialize variables:
h0 := 0x67452301
h1 := 0xEFCDAB89
h2 := 0x98BADCFE
h3 := 0x10325476
h4 := 0xC3D2E1F0
Pre-processing:
append the bit '1' to the message
append k bits '0', where k is the minimum number >= 0 such that the resulting message
length (in bits) is congruent to 448 (mod 512)
append length of message (before pre-processing), in bits, as 64-bit big-endian integer
Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
break chunk into sixteen 32-bit big-endian words w[i], 0 ≤ i ≤ 15
Extend the sixteen 32-bit words into eighty 32-bit words:
for i from 16 to 79
w[i] := (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) leftrotate 1
Initialize hash value for this chunk:
a := h0
b := h1
c := h2
d := h3
e := h4
Main loop:
for i from 0 to 79
if 0 ≤ i ≤ 19 then
f := (b and c) or ((not b) and d)
k := 0x5A827999
else if 20 ≤ i ≤ 39
f := b xor c xor d
k := 0x6ED9EBA1
else if 40 ≤ i ≤ 59
f := (b and c) or (b and d) or (c and d)
k := 0x8F1BBCDC
else if 60 ≤ i ≤ 79
f := b xor c xor d
k := 0xCA62C1D6
temp := (a leftrotate 5) + f + e + k + w[i]
e := d
d := c
c := b leftrotate 30
b := a
a := temp
Add this chunk's hash to result so far:
h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
h4 := h4 + e
Proce the final hash value (big-endian):
digest = hash = h0 append h1 append h2 append h3 append h4
上述關於 f 運算式列於 FIPS PUB 180-1 中 , 以下替代運算式也許也能在主要迴圈裡計算 f :
(0 ≤ i ≤ 19): f := d xor (b and (c xor d)) (alternative)
(40 ≤ i ≤ 59): f := (b and c) or (d and (b or c)) (alternative 1)
(40 ≤ i ≤ 59): f := (b and c) or (d and (b xor c)) (alternative 2)
(40 ≤ i ≤ 59): f := (b and c) + (d and (b xor c)) (alternative 3)
[編輯] SHA-2 演演演算法
以下是SHA-256 演演演算法的虛擬碼。注意,64個word w[16..63]中的位元比起 SHA-1 演演演算法,混合的程度大幅提升。
Note: All variables are unsigned 32 bits and wrap molo 232 when calculating
Initialize variables
(first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):
h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19
Initialize table of round constants
(first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311):
k[0..63] :=
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
Pre-processing:
append the bit '1' to the message
append k bits '0', where k is the minimum number >= 0 such that the resulting message
length (in bits) is congruent to 448 (mod 512)
append length of message (before pre-processing), in bits, as 64-bit big-endian integer
Process the message in successive 512-bit chunks:
break message into 512-bit chunks
for each chunk
break chunk into sixteen 32-bit big-endian words w[0..15]
Extend the sixteen 32-bit words into sixty-four 32-bit words:
for i from 16 to 63
s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3)
s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10)
w[i] := w[i-16] + s0 + w[i-7] + s1
Initialize hash value for this chunk:
a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
g := h6
h := h7
Main loop:
for i from 0 to 63
s0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
maj := (a and b) xor (a and c) xor (b and c)
t2 := s0 + maj
s1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
ch := (e and f) xor ((not e) and g)
t1 := h + s1 + ch + k[i] + w[i]
h := g
g := f
f := e
e := d + t1
d := c
c := b
b := a
a := t1 + t2
Add this chunk's hash to result so far:
h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
h4 := h4 + e
h5 := h5 + f
h6 := h6 + g
h7 := h7 + h
Proce the final hash value (big-endian):
digest = hash = h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7
其中 ch 函數及 maj 函數可利用前述 SHA-1 的優化方式改寫。
SHA-224 和 SHA-256 基本上是相同的, 除了:
h0 到 h7 的初始值不同,以及
SHA-224 輸出時截掉 h7 的函數值。
SHA-512 和 SHA-256 的結構相同,但:
SHA-512 所有的數字都是64位元,
SHA-512 執行80次加密迴圈而非64次,
SHA-512 初始值和常數拉長成64位元,以及
二者位元的偏移量和循環位移量不同。
SHA-384 和 SHA-512 基本上是相同的,除了:
h0 到 h7 的初始值不同,以及
SHA-384 輸出時截掉 h6 和 h7 的函數值。
㈧ java課程設計
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class Example10_6
{ public static void main(String args[])
{ char a[]=
"今晚10點發起總攻".toCharArray();
int n=0,m=0;
try{ File f=new File("secret.txt");
for(int i=0;i<a.length;i++)
{ a[i]=(char)(a[i]^'R');
}
FileWriter out=new FileWriter(f);
out.write(a,0,a.length);
out.close();
FileReader in=new FileReader(f);
char tom[]=new char[10];
System.out.println("密文:");
while((n=in.read(tom,0,10))!=-1)
{ String s=new String (tom,0,n);
System.out.print(s);
}
in.close();
in=new FileReader(f);
System.out.println("");
System.out.println("明文:");
while((n=in.read(tom,0,10))!=-1)
{ for(int i=0;i<n;i++)
{ tom[i]=(char)(tom[i]^'R');
}
String s=new String (tom,0,n);
System.out.print(s);
}
in.close();
}
catch(IOException e)
{ System.out.println("File read Error");
}
}
}
-------------------------
拿著這個改改就行了吧,在加點什麼保存的。
應該是簡單的東西?