www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > > 嵌入式微處理器
[導(dǎo)讀]摘要算法又稱哈希算法,它表示輸入任意長(zhǎng)度的數(shù)據(jù),輸出固定長(zhǎng)度的數(shù)據(jù),它的主要特征是加密過(guò)程不需要密鑰,并且經(jīng)過(guò)加密的數(shù)據(jù)無(wú)法被解密。


本文詳細(xì)講解視頻已經(jīng)上傳到B站:

https://www.bilibili.com/video/BV1uy4y1p7on/


公眾號(hào)后臺(tái)回復(fù)【md5】即可獲得本文所有源碼。

一、摘要算法

摘要算法又稱哈希算法。

它表示輸入任意長(zhǎng)度的數(shù)據(jù),輸出固定長(zhǎng)度的數(shù)據(jù),它的主要特征是加密過(guò)程不需要密鑰,并且經(jīng)過(guò)加密的數(shù)據(jù)無(wú)法被解密。

目前可以被解密逆向的只有CRC32算法,只有輸入相同的明文數(shù)據(jù)經(jīng)過(guò)相同的消息摘要算法才能得到相同的密文。

消息摘要算法不存在密鑰的管理與分發(fā)問(wèn)題,適合于分布式網(wǎng)絡(luò)上使用。由于其加密計(jì)算的工作量相當(dāng)巨大,所以以前的這種算法通常只用于數(shù)據(jù)量有限的情況下的加密。

消息摘要算法分為三類:

  • MD(Message Digest):消息摘要
  • SHA(Secure Hash Algorithm):安全散列
  • MAC(Message Authentication Code):消息認(rèn)證碼

這三類算法的主要作用:驗(yàn)證數(shù)據(jù)的完整性

二、MD5簡(jiǎn)介

MD5即Message-Digest Algorithm 5(信息-摘要算法)。

屬于摘要算法,是一個(gè)不可逆過(guò)程,就是無(wú)論多大數(shù)據(jù),經(jīng)過(guò)算法運(yùn)算后都是生成固定長(zhǎng)度的數(shù)據(jù),結(jié)果使用16進(jìn)制進(jìn)行顯示的128bit的二進(jìn)制串。通常表示為32個(gè)十六進(jìn)制數(shù)連成的字符串。

MD5有什么用?

用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語(yǔ)言普遍已有MD5實(shí)現(xiàn)。更多用在文檔校驗(yàn)上,用來(lái)生成密鑰檢測(cè)文檔是否被篡改。

三、在線MD5加密

有很多在線進(jìn)行MD5加密的網(wǎng)站,如下:

http://www.metools.info/code/c26.html

舉例: 給字符串?12334567?加密成。

如圖結(jié)果為:

32135A337F8DC8E2BB9A9B80D86BDFD0

四、C語(yǔ)言實(shí)現(xiàn)MD5算法

源文件如下:md5.h

#ifndef?MD5_H
#define?MD5_H
?
typedef?struct
{

????unsigned?int?count[2];
????unsigned?int?state[4];
????unsigned?char?buffer[64];???
}MD5_CTX;
?
?????????????????????????
#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))
#define?ROTATE_LEFT(x,n)?((x?<>?(32-n)))
#define?FF(a,b,c,d,x,s,ac)?\
??????????{?\
??????????a?+=?F(b,c,d)?+?x?+?ac;?\
??????????a?=?ROTATE_LEFT(a,s);?\
??????????a?+=?b;?\
??????????}

#define?GG(a,b,c,d,x,s,ac)?\
??????????{?\
??????????a?+=?G(b,c,d)?+?x?+?ac;?\
??????????a?=?ROTATE_LEFT(a,s);?\
??????????a?+=?b;?\
??????????}

#define?HH(a,b,c,d,x,s,ac)?\
??????????{?\
??????????a?+=?H(b,c,d)?+?x?+?ac;?\
??????????a?=?ROTATE_LEFT(a,s);?\
??????????a?+=?b;?\
??????????}

#define?II(a,b,c,d,x,s,ac)?\
??????????{?\
??????????a?+=?I(b,c,d)?+?x?+?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(MD5_CTX?*context,unsigned?char?digest[16]);
void?MD5Transform(unsigned?int?state[4],unsigned?char?block[64]);
void?MD5Encode(unsigned?char?*output,unsigned?int?*input,unsigned?int?len);
void?MD5Decode(unsigned?int?*output,unsigned?char?*input,unsigned?int?len);
?
#endif

md5.c

#include?
#include?"md5.h"
?
unsigned?char?PADDING[]={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};
?????????????????????????
void?MD5Init(MD5_CTX?*context)
{
?????context->count[0]?=?0;
?????context->count[1]?=?0;
?????context->state[0]?=?0x67452301;
?????context->state[1]?=?0xEFCDAB89;
?????context->state[2]?=?0x98BADCFE;
?????context->state[3]?=?0x10325476;
}
void?MD5Update(MD5_CTX?*context,unsigned?char?*input,unsigned?int?inputlen)
{
????unsigned?int?i?=?0,index?=?0,partlen?=?0;
????index?=?(context->count[0]?>>?3)?&?0x3F;
????partlen?=?64?-?index;
????context->count[0]?+=?inputlen?<3;
????if(context->count[0]?3))
???????context->count[1]++;
????context->count[1]?+=?inputlen?>>?29;
????
????if(inputlen?>=?partlen)
????{
???????memcpy(&context->buffer[index],input,partlen);
???????MD5Transform(context->state,context->buffer);
???????for(i?=?partlen;i+64?<=?inputlen;i+=64)
???????????MD5Transform(context->state,&input[i]);
???????index?=?0;????????
????}??
????else
????{
????????i?=?0;
????}
????memcpy(&context->buffer[index],&input[i],inputlen-i);
}
void?MD5Final(MD5_CTX?*context,unsigned?char?digest[16])
{
????unsigned?int?index?=?0,padlen?=?0;
????unsigned?char?bits[8];
????index?=?(context->count[0]?>>?3)?&?0x3F;
????padlen?=?(index?56)?(56-index):(120-index);
????MD5Encode(bits,context->count,8);
????MD5Update(context,PADDING,padlen);
????MD5Update(context,bits,8);
????MD5Encode(digest,context->state,16);
}
void?MD5Encode(unsigned?char?*output,unsigned?int?*input,unsigned?int?len)
{
????unsigned?int?i?=?0,j?=?0;
????while(j?????{
?????????output[j]?=?input[i]?&?0xFF;??
?????????output[j+1]?=?(input[i]?>>?8)?&?0xFF;
?????????output[j+2]?=?(input[i]?>>?16)?&?0xFF;
?????????output[j+3]?=?(input[i]?>>?24)?&?0xFF;
?????????i++;
?????????j+=4;
????}
}
void?MD5Decode(unsigned?int?*output,unsigned?char?*input,unsigned?int?len)
{
?????unsigned?int?i?=?0,j?=?0;
?????while(j??????{
???????????output[i]?=?(input[j])?|
???????????????????????(input[j+1]?<8)?|
???????????????????????(input[j+2]?<16)?|
???????????????????????(input[j+3]?<24);
???????????i++;
???????????j+=4;?
?????}
}
void?MD5Transform(unsigned?int?state[4],unsigned?char?block[64])
{
?????unsigned?int?a?=?state[0];
?????unsigned?int?b?=?state[1];
?????unsigned?int?c?=?state[2];
?????unsigned?int?d?=?state[3];
?????unsigned?int?x[64];
?????MD5Decode(x,block,64);
?????FF(a,?b,?c,?d,?x[?0],?7,?0xd76aa478);?/*?1?*/
?FF(d,?a,?b,?c,?x[?1],?12,?0xe8c7b756);?/*?2?*/
?FF(c,?d,?a,?b,?x[?2],?17,?0x242070db);?/*?3?*/
?FF(b,?c,?d,?a,?x[?3],?22,?0xc1bdceee);?/*?4?*/
?FF(a,?b,?c,?d,?x[?4],?7,?0xf57c0faf);?/*?5?*/
?FF(d,?a,?b,?c,?x[?5],?12,?0x4787c62a);?/*?6?*/
?FF(c,?d,?a,?b,?x[?6],?17,?0xa8304613);?/*?7?*/
?FF(b,?c,?d,?a,?x[?7],?22,?0xfd469501);?/*?8?*/
?FF(a,?b,?c,?d,?x[?8],?7,?0x698098d8);?/*?9?*/
?FF(d,?a,?b,?c,?x[?9],?12,?0x8b44f7af);?/*?10?*/
?FF(c,?d,?a,?b,?x[10],?17,?0xffff5bb1);?/*?11?*/
?FF(b,?c,?d,?a,?x[11],?22,?0x895cd7be);?/*?12?*/
?FF(a,?b,?c,?d,?x[12],?7,?0x6b901122);?/*?13?*/
?FF(d,?a,?b,?c,?x[13],?12,?0xfd987193);?/*?14?*/
?FF(c,?d,?a,?b,?x[14],?17,?0xa679438e);?/*?15?*/
?FF(b,?c,?d,?a,?x[15],?22,?0x49b40821);?/*?16?*/
?
?/*?Round?2?*/
?GG(a,?b,?c,?d,?x[?1],?5,?0xf61e2562);?/*?17?*/
?GG(d,?a,?b,?c,?x[?6],?9,?0xc040b340);?/*?18?*/
?GG(c,?d,?a,?b,?x[11],?14,?0x265e5a51);?/*?19?*/
?GG(b,?c,?d,?a,?x[?0],?20,?0xe9b6c7aa);?/*?20?*/
?GG(a,?b,?c,?d,?x[?5],?5,?0xd62f105d);?/*?21?*/
?GG(d,?a,?b,?c,?x[10],?9,??0x2441453);?/*?22?*/
?GG(c,?d,?a,?b,?x[15],?14,?0xd8a1e681);?/*?23?*/
?GG(b,?c,?d,?a,?x[?4],?20,?0xe7d3fbc8);?/*?24?*/
?GG(a,?b,?c,?d,?x[?9],?5,?0x21e1cde6);?/*?25?*/
?GG(d,?a,?b,?c,?x[14],?9,?0xc33707d6);?/*?26?*/
?GG(c,?d,?a,?b,?x[?3],?14,?0xf4d50d87);?/*?27?*/
?GG(b,?c,?d,?a,?x[?8],?20,?0x455a14ed);?/*?28?*/
?GG(a,?b,?c,?d,?x[13],?5,?0xa9e3e905);?/*?29?*/
?GG(d,?a,?b,?c,?x[?2],?9,?0xfcefa3f8);?/*?30?*/
?GG(c,?d,?a,?b,?x[?7],?14,?0x676f02d9);?/*?31?*/
?GG(b,?c,?d,?a,?x[12],?20,?0x8d2a4c8a);?/*?32?*/
?
?/*?Round?3?*/
?HH(a,?b,?c,?d,?x[?5],?4,?0xfffa3942);?/*?33?*/
?HH(d,?a,?b,?c,?x[?8],?11,?0x8771f681);?/*?34?*/
?HH(c,?d,?a,?b,?x[11],?16,?0x6d9d6122);?/*?35?*/
?HH(b,?c,?d,?a,?x[14],?23,?0xfde5380c);?/*?36?*/
?HH(a,?b,?c,?d,?x[?1],?4,?0xa4beea44);?/*?37?*/
?HH(d,?a,?b,?c,?x[?4],?11,?0x4bdecfa9);?/*?38?*/
?HH(c,?d,?a,?b,?x[?7],?16,?0xf6bb4b60);?/*?39?*/
?HH(b,?c,?d,?a,?x[10],?23,?0xbebfbc70);?/*?40?*/
?HH(a,?b,?c,?d,?x[13],?4,?0x289b7ec6);?/*?41?*/
?HH(d,?a,?b,?c,?x[?0],?11,?0xeaa127fa);?/*?42?*/
?HH(c,?d,?a,?b,?x[?3],?16,?0xd4ef3085);?/*?43?*/
?HH(b,?c,?d,?a,?x[?6],?23,??0x4881d05);?/*?44?*/
?HH(a,?b,?c,?d,?x[?9],?4,?0xd9d4d039);?/*?45?*/
?HH(d,?a,?b,?c,?x[12],?11,?0xe6db99e5);?/*?46?*/
?HH(c,?d,?a,?b,?x[15],?16,?0x1fa27cf8);?/*?47?*/
?HH(b,?c,?d,?a,?x[?2],?23,?0xc4ac5665);?/*?48?*/
?
?/*?Round?4?*/
?II(a,?b,?c,?d,?x[?0],?6,?0xf4292244);?/*?49?*/
?II(d,?a,?b,?c,?x[?7],?10,?0x432aff97);?/*?50?*/
?II(c,?d,?a,?b,?x[14],?15,?0xab9423a7);?/*?51?*/
?II(b,?c,?d,?a,?x[?5],?21,?0xfc93a039);?/*?52?*/
?II(a,?b,?c,?d,?x[12],?6,?0x655b59c3);?/*?53?*/
?II(d,?a,?b,?c,?x[?3],?10,?0x8f0ccc92);?/*?54?*/
?II(c,?d,?a,?b,?x[10],?15,?0xffeff47d);?/*?55?*/
?II(b,?c,?d,?a,?x[?1],?21,?0x85845dd1);?/*?56?*/
?II(a,?b,?c,?d,?x[?8],?6,?0x6fa87e4f);?/*?57?*/
?II(d,?a,?b,?c,?x[15],?10,?0xfe2ce6e0);?/*?58?*/
?II(c,?d,?a,?b,?x[?6],?15,?0xa3014314);?/*?59?*/
?II(b,?c,?d,?a,?x[13],?21,?0x4e0811a1);?/*?60?*/
?II(a,?b,?c,?d,?x[?4],?6,?0xf7537e82);?/*?61?*/
?II(d,?a,?b,?c,?x[11],?10,?0xbd3af235);?/*?62?*/
?II(c,?d,?a,?b,?x[?2],?15,?0x2ad7d2bb);?/*?63?*/
?II(b,?c,?d,?a,?x[?9],?21,?0xeb86d391);?/*?64?*/
?????state[0]?+=?a;
?????state[1]?+=?b;
?????state[2]?+=?c;
?????state[3]?+=?d;
}

五、MD5加密實(shí)例

MD5加密步驟如下:

  1. 定義
MD5_CTX?md5c;?
  1. 初始化
/********************************************************
*?名????稱:?MD5Init()
*?功????能:?初始化MD5結(jié)構(gòu)體
*?入口參數(shù):?
?? context:要初始化的MD5結(jié)構(gòu)體?
*?出口參數(shù):?無(wú)
*********************************************************/

MD5Init(MD5_CTX?*context);
  1. MD5值計(jì)算

實(shí)現(xiàn)MD5值的計(jì)算及結(jié)構(gòu)體的更新:


/*********************************************************
*?名????稱:?MD5Update()
*?功????能:?將要加密的信息傳遞給初始化過(guò)的MD5結(jié)構(gòu)體,無(wú)返回值
*?入口參數(shù):?
?? context:初始化過(guò)了的MD5結(jié)構(gòu)體?
??? input:需要加密的信息,可以任意長(zhǎng)度
??? inputLen:指定input的長(zhǎng)度
*?出口參數(shù):?無(wú)
*********************************************************/

MD5Update(MD5_CTX?*context,(unsigned?char?*)input,inputLen);?
  1. 輸出轉(zhuǎn)換
/*********************************************************
*?名????稱:?MD5Update()
*?功????能:?將加密結(jié)果存儲(chǔ)到,無(wú)返回值
*?入口參數(shù):?
?? context:初始化過(guò)了的MD5結(jié)構(gòu)體?
??? digest :加密過(guò)的結(jié)果
*?出口參數(shù):?無(wú)
*********************************************************/

MD5Final(MD5_CTX?*context,unsigned?char?digest[16]);
  1. 格式整理

轉(zhuǎn)換成32位的16進(jìn)制字符串。

實(shí)例1 字符串加密

對(duì)字符串進(jìn)行加密:

??1?#include?
??2?#include?
??3?#include?"md5.h"
??4?#include?
??5?#include?
??6?#include?
??7?#include?
??8?
??9?void?main(?void?)?
?10?
{?
?11?????int?read_len;
?12?????int?i?;
?13?????char?temp[8]={0};
?14?????unsigned?char?digest[16];?//存放結(jié)果?
?15?????char?hexbuf[128]="12334567";
?16?????unsigned?char?decrypt[16]={0};??
?17?????unsigned?char?decrypt32[64]={0};????
?18?
?19?????MD5_CTX?md5c;?
?20?
?21?????MD5Init(&md5c);?//初始化
?22?????read_len?=?strlen(hexbuf);
?23?????MD5Update(&md5c,(unsigned?char?*)hexbuf,read_len);??
?24?
?25?????MD5Final(&md5c,decrypt);?
?26?????strcpy((char?*)decrypt32,"");
?27?
?28?????for(i=0;i<16;i++)
?29?????{
?30?????????sprintf(temp,"%02x",decrypt[i]);
?31?????????strcat((char?*)decrypt32,temp);
?32?????}
?33?????printf("md5:%s\n",decrypt32);
?34?????
?35?????return;
?36?}

執(zhí)行結(jié)果如下:

本例對(duì)字符串12334567進(jìn)行加密,結(jié)果和在線加密結(jié)果一致。

實(shí)例2 文件加密

對(duì)文件進(jìn)行加密

#include?
#include?
#include?"md5.h"
#include?
#include?
#include?
#include?

#define?FORWORD_FW?"123.c"

int?calc_md5(char*filename,char*dest)
{
?int?i;
?int?filelen?=?0;
?int?read_len;
?char?temp[8]={0};?
?char?hexbuf[128]={0};
?unsigned?char?decrypt[16]={0};??
?unsigned?char?decrypt32[64]={0};
?MD5_CTX?md5;
?char?fw_path[128];

?int?fdf;
?
?fdf?=?open(filename,O_RDWR);
?if(fdf<0)
?{
??printf("%s?not?exist\n",FORWORD_FW);
??return?-1;
?}
?
?MD5Init(&md5);??
?while(1)
?{
??read_len?=?read(fdf,?hexbuf,sizeof(hexbuf));?
??if?(read_len?<0)?{??
???close(fdf);???
???return?-1;
??}
??if(read_len==0)
??{
???break;
??}
??filelen?+=?read_len;
??MD5Update(&md5,(unsigned?char?*)hexbuf,read_len);?
?}

?
?MD5Final(&md5,decrypt);?
?strcpy((char?*)decrypt32,"");
?
?for(i=0;i<16;i++)
?{
??sprintf(temp,"%02x",decrypt[i]);
??strcat((char?*)decrypt32,temp);
?}
?strcpy(dest,decrypt32);

?printf("md5:%s?len=%d\n",dest,filelen);
?close(fdf);

?return?filelen;
}
int?main(int?argc,?char?*argv[])
{
?int?ret;
?int?filelen;
?char?md5_str[64]={0};
?char?cmd[256]={0};
?
?filelen?=?calc_md5(FORWORD_FW,md5_str);
?if(filelen<0)
?{
??printf("calc_md5?fail\n");
??return?-1;
?}

?return?0;
}

運(yùn)行結(jié)果:

在線驗(yàn)證結(jié)果對(duì)比:

http://www.metools.info/other/o21.html

結(jié)果
END

來(lái)源:一口Linux,作者:土豆居士

版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。

推薦閱讀
呵,你會(huì)51單片機(jī)的精確延時(shí)嗎?
關(guān)于畫(huà)電路圖的10大分歧,你站哪邊?
早期MCU芯片是怎么加密的?


→點(diǎn)關(guān)注,不迷路←

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉