国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Openssl數(shù)據(jù)安全傳輸平臺015:OCCI的使用方法+在項目中的設(shè)計與實現(xiàn)

這篇具有很好參考價值的文章主要介紹了Openssl數(shù)據(jù)安全傳輸平臺015:OCCI的使用方法+在項目中的設(shè)計與實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 OCCI使用

// 頭文件
#include <occi.h>
// occi的接口類在對應(yīng)的命名空間中
using namespace oracle::occi;

// 使用
1. 初始化一個環(huán)境->對應(yīng)的類: Environment
2. 使用初始化完成的環(huán)境對象創(chuàng)建一個連接, 得到一個連接對象: Connection, 通過這個對象可用連接并操作服務(wù)器
3. 對數(shù)據(jù)庫的操作: 添刪查改(對應(yīng)相關(guān)的sql語句)
        - 通過得到的連接數(shù)據(jù)庫的實例對象, 創(chuàng)建一個可以對象數(shù)據(jù)進行sql操作的一個對象: Statement
4. 如果對數(shù)據(jù)進行是查詢操作, 會得到一個結(jié)果集, 這個結(jié)果集對應(yīng)的也是一個類: ResultSet
5. 釋放資源
    - 結(jié)果集資源->ResultSet
    - 對數(shù)據(jù)進行sql操作的對象->Statement
    - 銷毀連接對象->Connection
    - 數(shù)據(jù)連接環(huán)境->Environment

1.1 初始化 - Environment 類

OCCI通過創(chuàng)建一個Environment的對象完成初始化工作。

可以通過Environment創(chuàng)建數(shù)據(jù)庫連接,從而進行其它的操作

要創(chuàng)建Environment,應(yīng)該調(diào)用Environment類的靜態(tài)方法createEnvironment()

// 環(huán)境初始化
Environment* env = Environment::createEnvironment();
// 關(guān)閉, 釋放資源
Environment::terminateEnvironment(env);

1.2 連接數(shù)據(jù)庫 - Connection 類

連接數(shù)據(jù)庫通過Connection類的對象實例實現(xiàn)

調(diào)用Environment類的**createConnection()**方法可以創(chuàng)建一個Connection對象;

// 函數(shù)原型: 
// 連接串格式: IP:端口/數(shù)據(jù)庫實例名
Connection *Environment::createConnection( 
    const string &userName,const string &password, const string &connectString );
// 函數(shù)調(diào)用
const string userName = "scott";    // 用戶名
const string passwd = "tiger";    // 密碼
const string connstr = "192.168.247.129:1521/orcl";    // 數(shù)據(jù)庫連接串
Connection* conn = env->createConnection(userName, passwd, connstr);

使用**Environment::terminateConnection()**斷開連接

// 斷開連接
env->terminateConnection(conn);

1.3 執(zhí)行SQL

Statement 類用于執(zhí)行SQL語句,并獲取返回結(jié)果。

ResultSet 類用于處理SELECT 查詢的結(jié)果。

對于所有類型的數(shù)據(jù)的綁定或者獲取,OCCI都提供了統(tǒng)一的方法

  • setXXX 方法用于Statement
  • getXXX 方法用于Statement & ResultSet

OCCI會自動處理類型之間的轉(zhuǎn)換。

使用方法:

使用Connection:??*createStatement()**創(chuàng)建Statement對象, 指定 SQL 命令(DDL/DML/query)作為參數(shù)

// 操作函數(shù)
Connection::createStatement(string &sql);

Statement::setSQL(string &sql);

Statement::execute(string &sql);       // can be used for any SQL, returns status
// 執(zhí)行一個insert/update/delete
Statement::executeUpdate(string &sql); // returns Insert/Update/Delete count
// 執(zhí)行一個select語句
Statement::executeQuery(string &sql);  // returns ResultSet(結(jié)果集)

使用 setXXX 方法傳遞要綁定用于輸入的值

使用合適的execute方法執(zhí)行SQL

對于SELECT 查詢, 使用ResultSet 對象處理返回結(jié)果

// 插入操作
Statement *stmt = conn->createStatement(“ insert into Dept(Deptno,Dname, Loc) values (1, ‘ACCOUNTS’, ‘ZONE1’ ”);
stmt->executeUpdate();  
conn->terminateStatement(stmt);       // 關(guān)閉查詢, 釋放資源

使用綁定參數(shù)的DML(數(shù)據(jù)操作語句)示例:

Statement *stmt = conn->createStatement(“ insert into  Emp(EmpNo,Ename) values(:1, :2) ”);  
//1 and 2 are bind placeholders  
int empno = 2;  
string empname = “JOHN W”;  
//first parameter is bind position, second is value  
stmt->setInt(1, empno);   
stmt->setString(2, empname);  
stmt->executeUpdate();  

執(zhí)行SELECT查詢并處理結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-740232.html

Statement *stmt = conn->createStatement(
    “select Empno, Ename, Sal from Emp where Hiredate >= :1”);  

//automatically converted to Date  
stmt->setString(1, “01-JAN-1987”);  

//executeQuery returns a ResultSet  
ResultSet *rs = stmt->executeQuery();   

//ResultSet::next fetches rows and returns FALSE   
//when no more rows  
while (rs->next() == true)  
{  
   //get values using the getXXX methods of ResultSet  
   empno = rs->getInt(1);  
   empname = rs->getString(2);  
   empsalary = rs->getFloat(3);  
}  
stmt->closeResultSet(rs);//to free resources 

2 OCCI在項目中的使用

2.1 OCCI單獨封裝為一個類文件OCCIOP

#pragma once
#define _GLIBCXX_USE_CXX11_ABI 0
#include <string>
#include <occi.h>
#include "SeckKeyNodeInfo.h"
using namespace std;
using namespace oracle::occi;


class OCCIOP
{
public:
	OCCIOP();
	~OCCIOP();

	// 初始化環(huán)境連接數(shù)據(jù)庫
	bool connectDB(string user, string passwd, string connstr);
	// 得到keyID -> 根據(jù)實際業(yè)務(wù)需求封裝的小函數(shù)
	int getKeyID();
	bool updataKeyID(int keyID);
	bool writeSecKey(NodeSecKeyInfo *pNode);
	void closeDB();

private:
	// 獲取當(dāng)前時間, 并格式化為字符串
	string getCurTime();

private:
	Environment* m_env;
	Connection* m_conn;
};

2.2 在ServerOP中作為私有成員

#pragma once
#include <map>
#include "TcpServer.h"
#include "Message.pb.h"
#include "OCCIOP.h"
#include "SecKeyShm.h"
// 處理客戶端請求
class ServerOP
{
public:
	enum KeyLen {Len16=16, Len24=24, Len32=32};
	ServerOP(string json);
	void startServer();
	static void* working(void* arg);
	friend void* workHard(void* arg);
	string seckeyAgree(RequestMsg* reqMsg);
	~ServerOP();

private:
	string getRandKey(KeyLen len);

private:
	string m_serverID;	
	string m_dbUser;
	string m_dbPwd;
	string m_dbConnStr;
	unsigned short m_port;
	map<pthread_t, TcpSocket*> m_list;
	TcpServer *m_server = NULL;
	
	// 創(chuàng)建數(shù)據(jù)庫實例對象,因為在多處進行了使用,因此設(shè)置為成員
	OCCIOP m_occi;
	
	SecKeyShm* m_shm;
};

2.3 ServerOP::ServerOP(string json)中實例化進行使用

ServerOP::ServerOP(string json)
{
	// 解析json文件, 讀文件 -> Value
	ifstream ifs(json);
	Reader r;
	Value root;
	r.parse(ifs, root);
	m_port = root["Port"].asInt();
	m_serverID = root["ServerID"].asString();
	
	// 數(shù)據(jù)庫相關(guān)的信息
	m_dbUser = root["UserDB"].asString();
	m_dbPwd = root["PwdDB"].asString();
	m_dbConnStr = root["ConnStrDB"].asString();

	// 實例化一個連接oracle數(shù)據(jù)的對象
	m_occi.connectDB(m_dbUser, m_dbPwd, m_dbConnStr);

	string shmKey = root["ShmKey"].asString();
	int maxNode = root["ShmMaxNode"].asInt();
	m_shm = new SecKeyShm(shmKey, maxNode);
}

2.4 秘鑰協(xié)商過程中進行讀寫操作

// 將生成的新秘鑰寫入到數(shù)據(jù)庫中 -> 操作 SECKEYINFO
NodeSecKeyInfo node;
strcpy(node.clientID, reqMsg->clientid().data());
strcpy(node.serverID, reqMsg->serverid().data());
strcpy(node.seckey, key.data());

node.seckeyID = m_occi.getKeyID();	// 秘鑰的ID

info.seckeyID = node.seckeyID;
node.status = 1;

// 初始化node變量
bool bl = m_occi.writeSecKey(&node);

到了這里,關(guān)于Openssl數(shù)據(jù)安全傳輸平臺015:OCCI的使用方法+在項目中的設(shè)計與實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Openssl數(shù)據(jù)安全傳輸平臺003:Protobuf-3.17.2的編譯與部署:Windows:cmake+VS2022/ Centos7/8: make

    Openssl數(shù)據(jù)安全傳輸平臺003:Protobuf-3.17.2的編譯與部署:Windows:cmake+VS2022/ Centos7/8: make

    https://github.com/Chufeng-Jiang/OpenSSL_Secure_Data_Transmission_Platform/tree/main/Protobuf 0.2.1 Centos7 https://www.bilibili.com/video/BV1we411R7sS/?vd_source=3353f83539e46042d8cf76efb177a8e4 06-Protobuf在Centos7系統(tǒng)上的安裝:版本protobuf3.17.2 0.2.2 windows https://www.bilibili.com/video/BV1rw411X7mY/?spm_id_from=333.999.0.0vd_source=3353f8353

    2024年02月07日
    瀏覽(42)
  • 使用OpenWRT配置SFTP遠程文件傳輸,安全高效的文件傳輸方法

    使用OpenWRT配置SFTP遠程文件傳輸,安全高效的文件傳輸方法

    本次教程我們將在OpenWRT上安裝SFTP服務(wù),并結(jié)合cpolar內(nèi)網(wǎng)穿透,創(chuàng)建安全隧道映射22端口,實現(xiàn)在公網(wǎng)環(huán)境下遠程OpenWRT SFTP,安全地傳輸文件,比如備份文件、配置文件等。 SFTP是一種安全文件傳輸協(xié)議,它基于SSH協(xié)議,提供了加密、認證和數(shù)據(jù)完整性保護的安全文件傳輸服務(wù)

    2024年02月09日
    瀏覽(24)
  • 如何通過安全數(shù)據(jù)傳輸平臺,保護核心數(shù)據(jù)的安全傳輸?

    如何通過安全數(shù)據(jù)傳輸平臺,保護核心數(shù)據(jù)的安全傳輸?

    在數(shù)字化的浪潮中,企業(yè)的數(shù)據(jù)安全傳輸顯得尤為關(guān)鍵。隨著網(wǎng)絡(luò)攻擊手段的日益復(fù)雜,傳統(tǒng)的數(shù)據(jù)傳輸方式已不再安全,這就需要我們重視并采取有效的措施,通過安全數(shù)據(jù)傳輸平臺來保護核心數(shù)據(jù)。 傳統(tǒng)的數(shù)據(jù)傳輸面臨的主要問題包括: 1.網(wǎng)絡(luò)帶寬限制:企業(yè)的網(wǎng)絡(luò)帶寬

    2024年04月28日
    瀏覽(24)
  • Centos7-安裝Oracle11g-圖形化+靜默配置監(jiān)聽+DB實例+Navicate遠程連接+解鎖scott/tiger用戶+導(dǎo)入Openssl項目所需要的數(shù)據(jù)+OCCI測試

    Centos7-安裝Oracle11g-圖形化+靜默配置監(jiān)聽+DB實例+Navicate遠程連接+解鎖scott/tiger用戶+導(dǎo)入Openssl項目所需要的數(shù)據(jù)+OCCI測試

    本環(huán)境搭建主要用于黑馬金融數(shù)據(jù)安全傳輸平臺項目。 https://github.com/Chufeng-Jiang/OpenSSL_Secure_Data_Transmission_Platform 金融數(shù)據(jù)安全傳輸平臺 https://space.bilibili.com/38600195/channel/seriesdetail?sid=3727139ctype=0 https://www.bilibili.com/video/BV1Uc411f7To/?spm_id_from=333.999.0.0vd_source=3353f83539e46042d8cf76efb17

    2024年01月21日
    瀏覽(35)
  • STM32使用DMA傳輸UART空閑中斷中接收的數(shù)據(jù)遇到的問題以及解決方法

    STM32使用DMA傳輸UART空閑中斷中接收的數(shù)據(jù)遇到的問題以及解決方法

    STM32使用DMA傳輸UART空閑中斷中接收的數(shù)據(jù)遇到的問題以及解決方法 CubeMX配置 串口配置:使用默認配置(傳輸數(shù)據(jù)長度為8 Bit,奇偶檢驗無,停止位為1 Bit, 接收和發(fā)送都使能),因為我的是LIN項目所以使用的時串口的LIN模式,一般就是異步通信 打開DMA傳輸 打開串口接收中斷

    2024年02月05日
    瀏覽(25)
  • openssl3.2/test/certs - 015 - Primary intermediate ca: ca-cert

    openssl3.2 - 官方demo學(xué)習(xí) - test - certs 這個例子有不同的地方, 發(fā)證書時, 指定了CA. 看實驗注釋, 是主一級CA來發(fā)證書. file my_openssl_linux_log_doc_015.txt note openssl3.2/test/certs - 015 - Primary intermediate ca: ca-cert // ---------------------------------------------------------------------- // 官方原始腳本 // ----

    2024年01月23日
    瀏覽(19)
  • OpenSSL加解密算法使用方法

    下面簡單記錄一下 Linux 上 openssl 命令的使用方法,包括 OpenSSL 中加解密算法的使用方法和性能測試方法,以便讓新手朋友們能快速用起來。持續(xù)更新中 … sm3 算法 sm4 算法 加密 解密 aes 算法 加密 解密 chacha20 算法 加密 解密 sha1/sha256/sha512 算法 md5 算法 性能測試 涵蓋大多數(shù)加

    2024年02月09日
    瀏覽(16)
  • 使用openssl rand隨機生成MAC地址的方法

    當(dāng)我們使用虛擬網(wǎng)卡的時候,有時候需要為虛擬網(wǎng)卡配置隨機的MAC地址。我們知道,網(wǎng)卡的MAC地址實際上是一個6字節(jié)的整型數(shù),通常表現(xiàn)為用英文冒號(:)隔開的十六進制字符串(全部大寫或者全部小寫),如下面所示(全部小寫): openssl rand 命令可以生成一個n字節(jié)的數(shù)

    2024年02月09日
    瀏覽(20)
  • 為減少來自環(huán)境使用的無線傳感器網(wǎng)絡(luò)的傳輸次數(shù)而開發(fā)的方法(Matlab代碼實現(xiàn))

    為減少來自環(huán)境使用的無線傳感器網(wǎng)絡(luò)的傳輸次數(shù)而開發(fā)的方法(Matlab代碼實現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢: ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運行結(jié)果 ??3 參考文獻 ??4 Matlab代碼實現(xiàn) 隨著無線

    2024年02月08日
    瀏覽(25)
  • 015-信息打點-主機架構(gòu)&蜜罐識別&WAF識別&端口掃描&協(xié)議識別&服務(wù)安全

    015-信息打點-主機架構(gòu)&蜜罐識別&WAF識別&端口掃描&協(xié)議識別&服務(wù)安全

    1、端口掃描-應(yīng)用協(xié)議 2、WAF識別-分類識別 3、蜜罐識別-分類識別 解決: 1、Web服務(wù)器應(yīng)用服務(wù)器差異性 2、WAF防火墻安全防護識別技術(shù) 3、蜜罐平臺安全防護識別技術(shù) 開發(fā)語言:PHP、JAVA、Ruby、Python、C#,JS等 Web服務(wù)器:Apache、Nginx、IIS、lighttpd等 應(yīng)用服務(wù)器:Tomcat、Jboss、

    2024年01月21日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包