新聞中心
隨著移動互聯(lián)網(wǎng)和智能手機的迅速普及,手機應(yīng)用程序的熱度也日益高漲。而作為手機應(yīng)用程序的開發(fā)者,不僅需要掌握框架和編程語言等基礎(chǔ)知識,還需要了解如何儲存代碼和管理數(shù)據(jù),以確保程序的運行穩(wěn)定和數(shù)據(jù)的安全性。因此,在本篇文章中我們將討論程序開發(fā)中的代碼儲存和數(shù)據(jù)庫掌握問題。

一、代碼儲存
1.版本控制
在進行程序開發(fā)的過程中,我們經(jīng)常要經(jīng)歷多個版本的代碼,而這時就需要一個版本控制的工具來保留每個版本的代碼,方便修改和管理。目前比較流行的版本控制工具有Git、SVN、Mercurial等,其中Git是目前更流行的版本控制工具之一。
Git是一個開源的分布式版本控制工具,它能夠記錄每次代碼修改的內(nèi)容和時間,并將代碼保留在本地和云端,以便開發(fā)者在需要時能夠快速找到之前的代碼。使用Git,開發(fā)者可以創(chuàng)建新的分支來進行代碼修改,同時能夠合并不同分支之間的代碼,在多人協(xié)作時非常方便。
2.代碼托管
代碼托管是將代碼儲存在專門的平臺上,以便多人協(xié)作開發(fā)、代碼備份以及版本控制方便。比較流行的代碼托管平臺有Github、Gitlab、Bitbucket等,其中Github是更受歡迎的一個。
Github是一個在線的代碼托管平臺,開發(fā)者可以將代碼存放在自己的倉庫中,并與其他開發(fā)者共享代碼。在Github上,開發(fā)者可以提交代碼、合并代碼、發(fā)布版本等操作,并可以通過Github Page來展示自己的項目。
二、數(shù)據(jù)庫掌握
1.關(guān)系型數(shù)據(jù)庫
在開發(fā)中,我們通常會使用關(guān)系型數(shù)據(jù)庫來存儲應(yīng)用程序中的數(shù)據(jù),比如MySQL、Oracle、SQL Server等數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫是使用表格來存儲和管理數(shù)據(jù)的,表格中有各自的字段和索引,使得數(shù)據(jù)的檢索和管理更加方便。
2.非關(guān)系型數(shù)據(jù)庫
除了關(guān)系型數(shù)據(jù)庫,還有一類非關(guān)系型數(shù)據(jù)庫被稱為NoSQL數(shù)據(jù)庫,它們在處理大量非結(jié)構(gòu)化數(shù)據(jù)方面效率更高。比較流行的NoSQL數(shù)據(jù)庫有MongoDB、Redis、CouchDB等。
MongoDB是一個跨平臺的非關(guān)系型數(shù)據(jù)庫軟件,可用于存儲大量數(shù)據(jù)。與關(guān)系型數(shù)據(jù)庫相比,MongoDB更加靈活,它不需要設(shè)計復(fù)雜的關(guān)系表格,而是采用了基于ON格式的文檔存儲方式,使得存儲和查詢更加方便快捷。
3.數(shù)據(jù)庫遷移
在多人協(xié)作開發(fā)中,開發(fā)者經(jīng)常需要對數(shù)據(jù)庫進行升級和遷移。為了避免數(shù)據(jù)庫數(shù)據(jù)的丟失,開發(fā)者可以使用一些數(shù)據(jù)庫遷移工具來進行數(shù)據(jù)遷移。比如MySQL Workbench、Flyway、Liquibase等。
MySQL Workbench是一個開源的MySQL數(shù)據(jù)庫管理工具,可以用于數(shù)據(jù)庫設(shè)計、數(shù)據(jù)庫維護以及數(shù)據(jù)庫遷移等操作。Flyway和Liquibase都是開源的數(shù)據(jù)庫遷移工具,可以幫助開發(fā)者輕松地遷移數(shù)據(jù)庫,避免數(shù)據(jù)的丟失。
:
本文主要討論了程序開發(fā)中的代碼儲存和數(shù)據(jù)庫掌握問題。對于代碼儲存,我們可以使用版本控制工具和代碼托管平臺來進行版本控制和代碼管理;對于數(shù)據(jù)庫掌握,我們需要了解關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫的特性,同時了解數(shù)據(jù)庫遷移工具的使用,以確保數(shù)據(jù)的安全和程序的穩(wěn)定性。希望本文對讀者在進行程序開發(fā)時有所幫助。
相關(guān)問題拓展閱讀:
- 加密/解密Android現(xiàn)有的數(shù)據(jù)庫使用SQLCipher問題,怎么解決
加密/解密Android現(xiàn)有的數(shù)據(jù)庫使用SQLCipher問題,怎么解決
針對sqlite數(shù)據(jù)庫文件,進行加密。現(xiàn)有兩種方案如下:
1.對數(shù)據(jù)庫中的數(shù)據(jù)進行加密。
2.對數(shù)據(jù)庫文件進行加密
1.uin怎么獲取?
這個uin不是登錄的帳號,而是屬于內(nèi)部的、程序界面上不可見的一個編號。
至于查看,最簡單的方法就是登錄web微信后,按F12打開網(wǎng)頁調(diào)試工具,然后ctrl+F搜索“uin”,可以找到一串長長的URL,里面的uin就是當前登錄的微信的uin。
還
有一種方法就是配置文件里,導(dǎo)出的微信目錄下有幾個cfg文件,這幾個文件里有保存,不過是java的hashmap,怎么解析留給小伙伴們自己琢磨吧,
還有就是有朋友反應(yīng)退出微信(后臺運行不叫退出)或者注銷微信后會清空這些配置信息,所以小伙伴們導(dǎo)出的時候記得在微信登陸狀態(tài)下導(dǎo)出。博主自己鼓搗了一
個小程序來完成解析。
2.一個手機多個登錄帳號怎么辦(沒有uin怎么辦)
根
據(jù)博主那個解密的帖子,必須知道串號和uin。串號好說,配置中一般都有可以搞到,uin從配置中讀取出來的時候只有當前登錄的或者最后登錄的,其他的幾
個記錄都沒辦法解密。網(wǎng)上某軟件的解決方法是讓用戶一個一個登錄后再導(dǎo)出。這個解決方法在某些情況下是不可能的,或者有時候根本不知道uin。
后來經(jīng)過一個朋友的指點,博主終于發(fā)現(xiàn)了解決方法,可敬廳以從配置中秒讀出來這個uin,這個方法暫時不透漏了,只是說明下這個異常情況。
3.串號和uin怎么都正確的怎么還是沒辦法解密
先
說說串號這個玩意,幾個熱心的朋友反饋了這個問題,經(jīng)過博主測試發(fā)現(xiàn)不同的手機使用的不一定是IMEI,也可能是IMSI等等,而且串號也不一定是標準的
15位,可能是各種奇葩,比如輸入*#06#出來的是一個,但是在微信程序里用的卻是另一個非常奇葩的東西,這種情況多在雙卡雙待和山寨機中出現(xiàn),經(jīng)過嚴
格的測試,現(xiàn)在已經(jīng)能做到精確識別,那幾位熱心的朋友也贈與了不同的代碼表示鼓勵。
4.計算出來了正確的key為什么無法打開數(shù)據(jù)庫文件
微
信這個變態(tài)用的不是標準的sqlite數(shù)據(jù)庫,那個帖子也提到了不是數(shù)據(jù)庫加密,是文件的內(nèi)容加密,其實是sqlcipher。官方上竟然還賣到
149$,不過倒是開放了源碼,水平夠高的可以自己嘗試編譯。google還能搜索到sqlcipher for
windows這個很好編譯,不過博主不知是長相問題還是人品問題,編譯出來的無法打開微信的數(shù)據(jù)庫,后來改了這份代碼才完成。
5.數(shù)據(jù)庫文件內(nèi)容是加密的,怎么還原
這
個是某些特殊情況下用到的,比如聊天記錄刪除了數(shù)據(jù)庫中就沒了,但是某個網(wǎng)友測試說數(shù)據(jù)庫無法查詢出來了,但是在文件中還是有殘留的。這個情況我沒測試
過,不過想想感覺有這個可能,就跟硬盤上刪除了文件其實就是刪除了文件的硬盤索引,內(nèi)容還是殘留在硬盤上可以還原一樣,sqlite數(shù)據(jù)庫刪除的條目只是
抹去了索引,內(nèi)容還存在這個文件亮渣隱中。
網(wǎng)上的都是直接打開讀取,并沒有解密還原這個文件成普通的sqlite數(shù)據(jù)庫,使用sqlcipher
的導(dǎo)出方法也只是將可查詢的內(nèi)容導(dǎo)出。后來博主花了時間通讀了內(nèi)容加密的方式,做了一個小程序?qū)⒓用艿奈募?nèi)容直接解密,不操作修改任何數(shù)據(jù),非數(shù)據(jù)庫轉(zhuǎn)
換,直接數(shù)據(jù)流解密,完全還原出來了原始的未加密的數(shù)據(jù)庫文件,大小不變,無內(nèi)容損失,可以直接用sqlite admin等工具直接打開。
6.已經(jīng)刪除的聊天內(nèi)容可以恢復(fù)么
通過上述第5的方式還原出原數(shù)據(jù)后,經(jīng)測試可以恢復(fù)。sqlite的刪除并不會從文件中徹底刪掉,而是抹掉索引,所以可以通過掃描原始文件恢復(fù)。前提是沒有重裝過微信。。。
兩種加密方式的優(yōu)缺點,比較如下:
一、對數(shù)據(jù)庫中的數(shù)據(jù)進行加密
優(yōu)點:
1.實現(xiàn)數(shù)據(jù)加密快速,只需添加兩個方法
一是:對明文數(shù)據(jù)進行加密返回密文數(shù)據(jù)
二是:對密文數(shù)據(jù)進行解密返回明文數(shù)據(jù)
2.程序無需進行太大變動,僅在對數(shù)據(jù)進行添加,修改,刪除,查詢時。針對指定的表字段進行修改進行加密,解密的字段即可。
不足:
1.由于對數(shù)據(jù)進行了加密。所以為了看到明文,必須密文進行解密。因此會增加處理器的消耗。因終端手機的梁改處理能力有限,可能會出現(xiàn)處理數(shù)據(jù)緩慢的現(xiàn)象發(fā)生。
2.僅僅對數(shù)據(jù)進行了加密,還是可以看到數(shù)據(jù)表的sql語句,可能猜測到表的作用。另外,如果沒有對一個表中的所有字段加密,則可以看沒有加密的明文數(shù)據(jù)。
需要做的工作:
1.無需考慮平臺差異性,qt,android,ios都能快速的實現(xiàn)。只需在每個平臺上,使用各自的語言,實現(xiàn)同樣的加密,解密算法即可。
2.需要對加密算法進行了解,選擇一種加密算法,進行實現(xiàn)。
二、對數(shù)據(jù)庫文件進行加密
優(yōu)點:
1.對整個文件進行了加密,用戶通過編輯器看不到任何有用的數(shù)據(jù),用戶使用sqlite browser軟件也無法打開文件查看數(shù)據(jù),保證了數(shù)據(jù)安全。
2.進行打開數(shù)據(jù)庫時,使用程序sqlite3_key(db,”********”,8);即可對文件解密,對數(shù)據(jù)表的操作無需進行加密,采用明文即可。
不足:
1.需要修改sqlite的源代碼,這個工作難度比較大。
2.需要對修改后的sqlite進行編譯,需要對makefile有所了解,手動編寫makefile文件,對源程序進行編譯。因平臺差異性,可能會造成某個平臺無法編譯生成動態(tài)鏈接庫的可能。
3.需要對數(shù)據(jù)訪問層代碼進行修改,例如qt平臺需要將以前對數(shù)據(jù)庫操作使用的QSqlQuery類,更改為使用sqlite3.h文件中定義操作,對數(shù)據(jù)庫操作。其他平臺也一樣,都要做這一步的修改。
4.在程序編譯時,要加入使用加密的動態(tài)鏈接庫(linux為共享庫.so文件)windows平臺最容易,只需將所使用的dll文件copy到應(yīng)用程序中即可。其他平臺需要實驗,看如何引入庫,如果編譯。
需要做的工作:
1.修改sqlite源代碼,追加對數(shù)據(jù)庫文件進行加密的功能。
2.編譯含有加密功能的程序源代碼,生成各自平臺需要使用的庫文件。
3.將加密sqlite庫文件引入各自平臺中,修改數(shù)據(jù)庫訪問層代碼。
4.進行程序的部署,測試。
三、數(shù)據(jù)庫加密原理
目前主流的數(shù)據(jù)庫都采用了各種安全措施,主要包括用戶認證、訪問控制、數(shù)據(jù)加密存儲和數(shù)據(jù)庫操作審計等措施。
用戶認證:用戶或者程序向數(shù)據(jù)庫提供自己的有效身份證明,數(shù)據(jù)庫鑒別用戶的身份是否合法,只有合法的用戶才能存取數(shù)據(jù)
庫中的數(shù)據(jù)。用戶認證是所有安全機制的前提,只有通過認證才能進行授權(quán)訪問和審計。
訪問控制:數(shù)據(jù)庫管理系統(tǒng)為不同的用戶分配不同的權(quán)限,保證用戶只能進行授權(quán)的訪問。目前,一些大型數(shù)據(jù)庫(如Oracle 等)
都采用了基于角色的訪問控制機制,即為用戶授予不同的角色,如db—owner,security administrator 等,不同的角色允許對數(shù)據(jù)庫執(zhí)行不同的操作。
數(shù)據(jù)庫加密:用戶認證以及訪問控制對訪問數(shù)據(jù)庫進行了控制,但攻擊者可能會利用操作系統(tǒng)或數(shù)據(jù)庫漏洞,或物理接觸計算機,而直接接觸數(shù)據(jù)庫系統(tǒng)文件,從而可能繞過身份認證和存取控制而直接竊取或篡改數(shù)據(jù)庫內(nèi)容。對數(shù)據(jù)庫中的數(shù)據(jù)進行加密是防范這類威脅的有效手段。
數(shù)據(jù)庫操作審計:監(jiān)視和記錄用戶對數(shù)據(jù)庫所做的各種操作的安全機制,它記錄并存儲用戶的操作,用于事后分析,以檢查導(dǎo)致數(shù)據(jù)庫現(xiàn)狀的原因以及提供追蹤攻擊者的線索。數(shù)據(jù)庫的備份與恢復(fù):當數(shù)據(jù)庫發(fā)生不可恢復(fù)的故障時,可以將數(shù)據(jù)庫恢復(fù)到先前的某個一致性的狀態(tài)。
四、SQLite 加密
由于SQLite 是開放源碼的,并且在其源碼中預(yù)留了加密接口,我們可以通過實現(xiàn)其預(yù)留的加密接口實現(xiàn)口令認證和數(shù)據(jù)庫加密以完善其加密機制。
1.口令認證
SQLite 數(shù)據(jù)庫文件是一個普通文本文件,對它的訪問首先依賴于文件的訪問控制。在此基礎(chǔ)上,再增加進一步的口令認證,即在訪問數(shù)據(jù)庫時必須提供正確的口令,如果通過認證就可以對數(shù)據(jù)庫執(zhí)行創(chuàng)建、查詢、修改、插入、刪除和修改等操作;否則,不允許進一步的訪問。
關(guān)于手機所有代碼數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網(wǎng)站建設(shè),軟件開發(fā)老牌服務(wù)商!微信小程序開發(fā),APP開發(fā),網(wǎng)站制作,網(wǎng)站營銷推廣服務(wù)眾多企業(yè)。電話:028-86922220
網(wǎng)頁名稱:手機程序開發(fā):代碼儲存與數(shù)據(jù)庫掌握 (手機所有代碼數(shù)據(jù)庫)
標題網(wǎng)址:http://m.fisionsoft.com.cn/article/djjdhde.html


咨詢
建站咨詢
