新聞中心
在開發(fā) Linux 應(yīng)用程序時,常常需要讀取用戶輸入的密碼。通常情況下,我們往往會使用 Linux 系統(tǒng)提供的 getch() 函數(shù)來讀取用戶輸入的字符,但是這種方式在輸入密碼時會暴露用戶的密碼,不僅不安全,并且用戶的輸入也不夠隱私。為了保障用戶的密碼安全,本文將介紹如何隱藏密碼輸入的星號。

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比馬邊彝族網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式馬邊彝族網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋馬邊彝族地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
1. 讀取密碼的函數(shù)
在 Linux C 開發(fā)中,我們通常會使用 GCC 來編寫代碼,在讀取密碼的過程中,我們可以使用 termios.h 頭文件中的屬性,而在 Ubuntu 14.04 安裝包中,它已經(jīng)默認集成,因此我們可以直接使用該頭文件中的函數(shù)實現(xiàn)密碼的讀取,代碼如下:
“`
#include
#include
#include
#include
int getch(void)
{
struct termios tm, tm_old;
int fd = STDIN_FILENO, c;
if (tcgetattr(fd, &tm)
return -1;
}
tm_old = tm;
cfmakeraw(&tm);
if (tcsetattr(fd, TCSANOW, &tm)
return -1;
}
c = getchar();
if (tcsetattr(fd, TCSANOW, &tm_old)
return -1;
}
return c;
}
void getpassword(char *password,int size)
{
int i = 0, ch;
while ((ch = getch()) != ‘\n’)
{
if(ch != ‘\t’ && ch != ‘\b’ && i
{
putchar(‘*’);
*(password + i++) = ch;
}
else if(ch == ‘\b’ && i > 0)
{
putchar(‘\b’);
putchar(‘ ‘);
putchar(‘\b’);
i–;
}
}
*(password + i) = ‘\0’;
}
“`
在代碼中,getch() 函數(shù)是讀取字符的函數(shù),其中使用了 Linux 的 terminals 模塊來獲得輸入字符,這個結(jié)構(gòu)體包含了一系列的常量,如帶寬速率、奇偶檢驗、流控制和硬件控制。通過設(shè)備文件文件描述符 fd(設(shè)置為 STDIN)來獲取終端的屬性,然后把該函數(shù)阻塞并打開,使用 cfmakeraw(&tm) 設(shè)置它為非規(guī)范模式,使得輸入輸出數(shù)據(jù)直接發(fā)送和接收,就像開發(fā)實時應(yīng)用程序一樣。最后返回讀取到的字符。
getpassword() 函數(shù)通過 getche() 函數(shù)來避免了明文輸入密碼的情況,并在每一次輸入完一個字符之后輸出一個星號,從而避免了明文顯示密碼的情況。
2. 調(diào)用函數(shù)實現(xiàn)密碼輸入
在我們完成上述的代碼之后,我們可以使用它來進行密碼的輸入,然后將其發(fā)送到服務(wù)器。代碼如下:
“`
int mn()
{
char password[10];
printf(“Please enter password: “);
getpassword(password,10);
printf(“\nYour password is %s “, password);
return 0;
}
“`
在代碼中,我們可以看到,首先像命令行提示用戶輸入密碼,然后通過調(diào)用 getpassword() 函數(shù)來讀取和隱藏密碼,并最后輸出結(jié)果。
3.
相關(guān)問題拓展閱讀:
- c語言編寫的程序,在輸入密碼時,如何加密?
- Linux中什么是密碼占位符
c語言編寫的程序,在輸入密碼時,如何加密?
加密和解密算法是程序編制中的重要一環(huán)。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那么輕易就被別人盜取的話,很多不可以預(yù)料的事情就會發(fā)生!
在現(xiàn)實生活中,我們遇到過太多QQ密碼被盜取的前空情況,有的朋友QQ被盜之后,騙子利用朋友間信任騙取錢財埋廳的事情屢見不鮮。支付寶也曾出現(xiàn)過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技慧液瞎術(shù)上都指向了同一相關(guān)問題:軟件加密算法的強壯程度。今天,小編利用C語言來簡單實現(xiàn)一種加密方法。下面是源代碼。
需要說明:程序利用了ascii碼值的按照一定規(guī)律變換實現(xiàn)加密,對于解密過程,則是加密的逆過程。下面是程序的運行結(jié)果。
4190閱讀
搜索
編程免費課程300節(jié)
初學(xué)編程100個代碼
java自學(xué)一般要學(xué)多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎(chǔ)學(xué)編程
前言:當今社會是一個信息社會,你的個人信息和聊天記錄極有可能被別有用心的人時時刻刻監(jiān)視著,那么你想不想實現(xiàn)專屬于兩個人或一個小圈子的人在社交軟件上的交流不被任何其他人讀懂呢?
下面就給棚頌團大家提供一個原理極其簡單程序極其容易實現(xiàn)的C語言文字加密小程序的實現(xiàn)算法。
在鍵盤上錄入了”今天晚上我不回家吃飯了”,將這串字符的ASCLL碼全部加1,打印出來是這樣的”掘晚晤市嫌臣假接湊負綠”。怎么樣,哈哈哈,是不是看完后丈二和尚摸不著頭腦?
所以,用這種算法實現(xiàn)對漢字的加密和翻譯絕對隱蔽!漢字在計算機中的編碼比較復(fù)雜,一個漢字在Windows 10系統(tǒng)下的CodeBlocks編譯器里占2個字符的位置,我記得我有做過櫻友測試,在Cent OS Linux系統(tǒng)下占3個字符的位置。
然而不管一個漢字占幾個字符的位置,對每個字符的ASCLL碼做加減乘除的運算和逆運算就可以實現(xiàn)對文字的加密和翻譯。
下面向大家展示一下源代碼(加密算法為將所有字符的ASCLL碼加1,翻譯算法為將所鏈橘有字符的ASCLL碼減1):
頭文件部分:
主函數(shù)部分:
下面向大家展示一下加密與翻譯的效果:
思考與提高:僅僅將所有字符的ASCLL碼加1就實現(xiàn)對文字信息的加密了,會不會很容易被破譯呢?請恕我不是密碼學(xué)專家,這一點我無法回答,但是直觀感覺這樣加密確實有點簡單。
那么我們就可以對字符進行多種更為復(fù)雜的處理,比如給所有字符加上一個正負變換的數(shù)列、給所有字符加上斐波那契數(shù)列等??傊庇^感覺就是越復(fù)雜越不容易被破譯。
下面向大家展示一下給所有字符加上一個正負變換的數(shù)列的加密算法的源代碼:
頭文件部分:
主函數(shù)部分主要是用來調(diào)試的,與上面那個簡單加密算法的主函數(shù)部分相同。
下面向大家展示一下使用這種復(fù)雜加密算法加密與翻譯的效果:
用了加密程序后,畫風是這樣的:
#include “stdio.h”
#include “
conio.h
“
int main()
{
char tmpc;
int i = 0;
tmpc = ‘ ‘;
簡改斗printf(“input password:\n”);
for(i = 0; i 山簡
#include
void main()
{
char c;
while(1)
{
c=getch();
if(c==’\r’) break;
printf(“賣尺*”);
}
}
#include void main() { char str,*p=str; gets(str); while(*p) { if(*p>=’a’ && *p=’a’ && *p
Linux中什么是密碼占位符
舉幾個例子,你就明白了:
1、“#”:數(shù)字占位符。只顯有意義的零而不顯示無意義的零。小數(shù)點后數(shù)字如大于”#”的數(shù)中運量,則按”#”的位數(shù)四舍五入。
例:代碼:”###.##”,12.1顯示為12.10;12.1263顯示為:12.13
2、”0”:數(shù)字占位符。如果單元格的內(nèi)容大于占位符,則顯示實際數(shù)字,如果小于點位符的數(shù)量,則用0補足。
例:代碼:”00000”。顯示為;123顯示為00123
代碼:”00.000”。消培橘100.14顯示為100.140;1.1顯示為01.100
3、”@”:文本占位符,如果只使用單個@,作用拿團是引用原始文本,
要在輸入數(shù)字數(shù)據(jù)之后自動添加文本,使用自定義格式為:”文本內(nèi)容”@;要在輸入數(shù)字數(shù)據(jù)之前自動添加文本,使用自定義格式為:@”文本內(nèi)容”。@符號的位置決定了Excel輸入的數(shù)字數(shù)據(jù)相對于添加文本的位置。
如果使用多個@,則可以重復(fù)文本。
星號
linux c 密碼 星號的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux c 密碼 星號,Linux C:如何隱藏密碼輸入的星號?,c語言編寫的程序,在輸入密碼時,如何加密?,Linux中什么是密碼占位符的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級標準機房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
當前題目:LinuxC:如何隱藏密碼輸入的星號?(linuxc密碼星號)
本文路徑:http://m.fisionsoft.com.cn/article/cdsihdj.html


咨詢
建站咨詢
